{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To run this, press \"*Runtime*\" and press \"*Run all*\" on a **free** Tesla T4 Google Colab instance!\n",
    "<div class=\"align-center\">\n",
    "<a href=\"https://unsloth.ai/\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/unsloth%20new%20logo.png\" width=\"115\"></a>\n",
    "<a href=\"https://discord.gg/unsloth\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/Discord button.png\" width=\"145\"></a>\n",
    "<a href=\"https://docs.unsloth.ai/\"><img src=\"https://github.com/unslothai/unsloth/blob/main/images/documentation%20green%20button.png?raw=true\" width=\"125\"></a></a> Join Discord if you need help + \u2b50 <i>Star us on <a href=\"https://github.com/unslothai/unsloth\">Github</a> </i> \u2b50\n",
    "</div>\n",
    "\n",
    "To install Unsloth your local device, follow [our guide](https://docs.unsloth.ai/get-started/install-and-update). This notebook is licensed [LGPL-3.0](https://github.com/unslothai/notebooks?tab=LGPL-3.0-1-ov-file#readme).\n",
    "\n",
    "You will learn how to do [data prep](#Data), how to [train](#Train), how to [run the model](#Inference), & [how to save it](#Save)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "hzPgFeIkZn9q"
   },
   "source": [
    "# Goal: Make Ministral solve Sudoku puzzles with Reinforcement Learning\n",
    "\n",
    "Our goal is to make Ministral learn to solve Sudoku puzzles using reinforcement learning (GRPO).\n",
    "The model will devise a strategy to fill in empty cells, and we'll reward it for correct placements\n",
    "and completing valid puzzles.\n",
    "\n",
    "<img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Sudoku_Puzzle_by_L2G-20050714_solution_standardized_layout.svg/1280px-Sudoku_Puzzle_by_L2G-20050714_solution_standardized_layout.svg.png\" height=\"300\" />\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### News"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "Introducing FP8 precision training for faster RL inference. [Read Blog](https://docs.unsloth.ai/new/fp8-reinforcement-learning).\n",
    "\n",
    "Unsloth's [Docker image](https://hub.docker.com/r/unsloth/unsloth) is here! Start training with no setup & environment issues. [Read our Guide](https://docs.unsloth.ai/new/how-to-train-llms-with-unsloth-and-docker).\n",
    "\n",
    "[gpt-oss RL](https://docs.unsloth.ai/new/gpt-oss-reinforcement-learning) is now supported with the fastest inference & lowest VRAM. Try our [new notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-(20B)-GRPO.ipynb) which creates kernels!\n",
    "\n",
    "Introducing [Vision](https://docs.unsloth.ai/new/vision-reinforcement-learning-vlm-rl) and [Standby](https://docs.unsloth.ai/basics/memory-efficient-rl) for RL! Train Qwen, Gemma etc. VLMs with GSPO - even faster with less VRAM.\n",
    "\n",
    "Visit our docs for all our [model uploads](https://docs.unsloth.ai/get-started/all-our-models) and [notebooks](https://docs.unsloth.ai/get-started/unsloth-notebooks).\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Installation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": "%%capture\nimport os\n\n!pip install pip3-autoremove\n!pip install torch torchvision torchaudio xformers --index-url https://download.pytorch.org/whl/cu128\n!pip install unsloth\n!pip install transformers==4.56.2\n!pip install --no-deps trl==0.22.2"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "liF15-XtmF26"
   },
   "source": [
    "### Unsloth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 612,
     "referenced_widgets": [
      "7fcdfa7d23d44925b0f232300db2f59d",
      "70c8e2981b1145fd91bbc05f6fd58fea",
      "1db6c54357f34dc5af32899cba0ac660",
      "e06c61e2516a461e949ecef1b0380358",
      "f2b76ba391f64baa8c06b21a1895e218",
      "2c8e25a98b2b4d7b855d57cd1c2cc82c",
      "59049b32f89d4803b9f4c282711e5eec",
      "b262ca3bcc784f0a9c5bb8d6a163b6fe",
      "c51b8c2051ad4b9a94603af332475427",
      "2c47367e63f14b11859d996d6c3e5e3a",
      "c1a1cb328a9149e398cf683805c92f83",
      "4f541dbb81a9404d85d4e7b4b38af073",
      "700fe67c924d4ad3a9498440a8d6737d",
      "3e457905a77b463c96d2a42a66749283",
      "ec6f1d2b96854f3a8f489d3022c9e94f",
      "4355d6bee4af44f18c0ef89589b6e082",
      "476c4f2ae91f4dcf9fafef9234ca4a32",
      "c2db413e07864994bf233f0abdb0ebb7",
      "bbec0b5f32894f11a6ba460cccdc33c2",
      "9166929e6b6546fda5354a856d1110c6",
      "cf2f0e04c9c24a9b86cd274cb0abcde4",
      "5aac87d473a54e5eb90014cc9113d1ac",
      "f40dbf1a955f4450a57dd9abbef4d1a8",
      "e1a7bcccbeb84b70891fe0776fd4203a",
      "2962a0841f244d1f9219c6f1364c0b29",
      "564536b52e8b4b8db789a855aa17e5e9",
      "6d852617f16e4962a6c521ed5ed4c5a9",
      "4c875576cb32499a9840ad2c991fcaa3",
      "132fd01b4b7c4fc79d736fc95e4f00c3",
      "e1d864f85e524454b743dab82196c5e3",
      "27edc7714c084d39955a2de84e56d921",
      "0a7d4786cda74e60b6ec8c77a78f7fc7",
      "04b2c9b577094decb9805dab33ffed51",
      "3de31ed66b6f4272bf2074231d88d293",
      "e66881d5d0fc4b5192fd1732eb19d137",
      "580214c6c3ef4eaa8da7cf6275aed23e",
      "324f41dafb154070b63305517d023eb1",
      "28cf2a512e0845389881f58817a70c38",
      "5035e8ea28744b669fe5f4dd6024f5df",
      "77a550d798ea45369cf16c5d6bd22f96",
      "ab84d82e55ad4fa7ab04e11e9ce2bdb9",
      "a2bf6d9d1d9a40eda8832439f5b454a4",
      "eb230248cde54ce3bea12700f41397b1",
      "f473a39499194b0094bd46287f4b0bce",
      "732274b5c58d4bb0a176511ed8dcacaa",
      "86cfd1f3e8fc40b5a8921976d8089ae6",
      "da6340c89f8743eb9b29e639fac5e028",
      "d3aa06551507474ab363858df6a4cd08",
      "21a8ac1997fd491796d7290458e73956",
      "1c81fd9cdc824d92ae61ccc5b2b8fa73",
      "554d89eedcb74537ba6ea75e278f5b56",
      "768bd3c5a95745988cfcc36af3c2372b",
      "9d4a836de73249ac8b14960730acc959",
      "469d1a0a9d504748ae800dee0c645fce",
      "ac683c1e64524b1bbef1f057224ea4d5",
      "76ff198dd539472288b4435e2af2edc1",
      "f804dbefdf0a42b8a1686fc6a020a9e6",
      "d27655073e9d46ed96f070bcf0ff3c8b",
      "2251c3f4698b4f8aa49df49543e13196",
      "be31d8956c024cc39eb8da53d5f1949b",
      "249bfaa209054491a6c0cc7e08ff77e7",
      "5e1731df9d044a9ea3d21b0e1b54c6d0",
      "cc7a595f09254a96bb89d0437cb2dbd0",
      "ab22700122f640c09ce53cfee53fdb3f",
      "738b68355ead41bfa3bef595fe757201",
      "1498e7f9eb9841b89a9263deec8cfaea",
      "4fe32477cdb94a88a50766e6334b8e1a",
      "fbaf38fd8d16419ebd5e0880c7eee3a9",
      "3368bed575d24a669d5dac2526577b7e",
      "d11d10dcf8124a59a9e201fda7d1ad20",
      "702c81292ea44f3bab215277120b5c58",
      "fedeaae7d4504a24bd314b512ab1e296",
      "60f32c4909d846e0a6aff62affee4d3f",
      "6841bc1f73d0402683d3efc7db802465",
      "2dc71128a2b2451c94d14933c3ef6c59",
      "f39e75b383724b39a1a624164fa68da7",
      "35f13c46c0024d9d9d396fd840cda33e",
      "a05e52c2b75645faac1b8795a159bea8",
      "c599268bb44c47e6b2220ca0f2efa2cb",
      "8b1aacb7f9c64eee8e9f05ae27fa13b8",
      "1ce00a5374ee4bf6a067881f5cb451af",
      "4f5cc939a9e14abda3e3e816eed2d28b",
      "e92059fff20f420bb9dde3b705024750",
      "665df323bf3345c9a9f63338982d4255",
      "26a32591bcf44f098f89713297b9413d",
      "74a5b7e3cd5647f8bf85ccf251d1b192",
      "269ec52cd12641b3b866a5c98ad19d07",
      "0b7bfca31b9941af976ba1b2bac22c38",
      "bbf673d4678949f2930472cb521b4df2",
      "8b2617d6edaf4533ab0ec16a18b3ec15",
      "efa739f7e712454cab002609fa73809c",
      "f00f9cbc3bbd45609deee25c2c99e09e",
      "76901317301e413d9c7bea64a52f80be",
      "9bbe874a71f0473c9d5681a95d65411b",
      "78229d4741264b6eb54c659f8c1df6f3",
      "24a76c4ef3b24b709c226d51d5432aea",
      "76ca39db50b942a1a1d3473255c2e9f3",
      "615ab90e6c4d4b6ca4673cb29a60faa1",
      "b42f06656e054e35852d2895e2f32028",
      "bfb21b57d6614f2497669cf1b5a0d987",
      "9c974a11cfc9468bb843152f5d2606a7",
      "4a9089bb320440f29a31f2fc9f2a781b",
      "b602521edf9b4e62bc6e392e6c434079",
      "84e49da74fb84d3f9c07326dcccafaa5",
      "0d5f369a1d954c799cbac8b5c0507fb2",
      "a5ab9cf7bfa8465182706e05b12a8224",
      "23ddcf8e888142a2ab8b370e8e2e4924",
      "d6ee650d710c43929fecd9ff0dee0f2e",
      "8f721f0e541f40c7a6c2bd789eff8378",
      "a0d5d827b11c4b0a85221867d890fafb",
      "aa55602ad84a4ac194fafdcff8158b43",
      "905299b6e97b4f61b113fc4da6c2e2c7",
      "ad147ffce1164eb2aa7ffa87e7b0af5f",
      "393ccbce7a5747c0a75bf7279631a5ab",
      "b7b2250b06eb4642813f5a88da424a7e",
      "a907b79d81864654844d3d0a84545b58",
      "c3ba270a4c354cfc91da59871322df20",
      "193b285c9fd642eab9be53cd0bf7433d",
      "b4239e2034a640d5abdf58ec72888e2c",
      "18744882ad4444b880b2cdebcdcc93ea",
      "8884436eea0048c59562ab6172d8ca14"
     ]
    },
    "id": "DkIvEkIIkEyB",
    "outputId": "37058712-024a-4057-93ee-bd85f5220fd7"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\ud83e\udda5 Unsloth: Will patch your computer to enable 2x faster free finetuning.\n",
      "ERROR 12-02 03:15:55 [fa_utils.py:64] Cannot use FA version 2 is not supported due to FA2 is only supported on devices with compute capability >= 8\n",
      "\ud83e\udda5 Unsloth Zoo will now patch everything to make training faster!\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "==((====))==  Unsloth 2025.11.6: Fast Ministral3 patching. Transformers: 5.0.0.dev0. vLLM: 0.11.2.\n",
      "   \\\\   /|    Tesla T4. Num GPUs = 1. Max memory: 14.741 GB. Platform: Linux.\n",
      "O^O/ \\_/ \\    Torch: 2.9.0+cu126. CUDA: 7.5. CUDA Toolkit: 12.6. Triton: 3.2.0\n",
      "\\        /    Bfloat16 = FALSE. FA [Xformers = 0.0.33.post1. FA2 = False]\n",
      " \"-____-\"     Free license: http://github.com/unslothai/unsloth\n",
      "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
      "Unsloth: QLoRA and full finetuning all not selected. Switching to 16bit LoRA.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7fcdfa7d23d44925b0f232300db2f59d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "model.safetensors.index.json:   0%|          | 0.00/45.6k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4f541dbb81a9404d85d4e7b4b38af073",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading (incomplete total...): 0.00B [00:00, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f40dbf1a955f4450a57dd9abbef4d1a8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Fetching 2 files:   0%|          | 0/2 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3de31ed66b6f4272bf2074231d88d293",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Loading weights:   0%|          | 0/458 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "732274b5c58d4bb0a176511ed8dcacaa",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "generation_config.json:   0%|          | 0.00/131 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "76ff198dd539472288b4435e2af2edc1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "processor_config.json:   0%|          | 0.00/189 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4fe32477cdb94a88a50766e6334b8e1a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "chat_template.jinja:   0%|          | 0.00/7.50k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a05e52c2b75645faac1b8795a159bea8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "preprocessor_config.json:   0%|          | 0.00/728 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bbf673d4678949f2930472cb521b4df2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer_config.json:   0%|          | 0.00/206k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bfb21b57d6614f2497669cf1b5a0d987",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer.json:   0%|          | 0.00/17.1M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "aa55602ad84a4ac194fafdcff8158b43",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "special_tokens_map.json:   0%|          | 0.00/21.4k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from unsloth import FastVisionModel\n",
    "import torch\n",
    "max_seq_length = 4096 # Can increase for longer reasoning traces\n",
    "lora_rank = 32 # Larger rank = smarter, but slower\n",
    "\n",
    "ministral_models = [\n",
    "    \"unsloth/Ministral-3-3B-Instruct-2512\", # Ministral instruct models\n",
    "    \"unsloth/Ministral-3-8B-Instruct-2512\",\n",
    "    \"unsloth/Ministral-3-14B-Instruct-2512\",\n",
    "\n",
    "    \"unsloth/Ministral-3-3B-Reasoning-2512\", # Ministral reasoning models\n",
    "    \"unsloth/Ministral-3-8B-Reasoning-2512\",\n",
    "    \"unsloth/Ministral-3-14B-Reasoning-2512\",\n",
    "\n",
    "    \"unsloth/Ministral-3-3B-Base-2512\", # Ministral base models\n",
    "    \"unsloth/Ministral-3-8B-Base-2512\",\n",
    "    \"unsloth/Ministral-3-14B-Base-2512\",\n",
    "] # More models at https://huggingface.co/unsloth\n",
    "\n",
    "model, tokenizer = FastVisionModel.from_pretrained(\n",
    "    model_name = \"unsloth/Ministral-3-3B-Instruct-2512\",\n",
    "    max_seq_length = max_seq_length,\n",
    "    load_in_4bit = False, # False for LoRA 16bit\n",
    "    fast_inference = False, # Enable vLLM fast inference\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "TfeUs-lQJDSq"
   },
   "source": [
    "To do efficient RL, we will use [LoRA](https://arxiv.org/abs/2106.09685), which allows us to only add 1 to 5% of extra weights to the model for finetuning purposes. This allows us to save memory usage by over 60%, and yet it retains good accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "8rGa-o3HJCo1",
    "outputId": "59d26e76-3585-431f-ae98-b95d3376ecd3"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unsloth: Making `model.base_model.model.model.vision_tower.transformer` require gradients\n"
     ]
    }
   ],
   "source": [
    "model = FastVisionModel.get_peft_model(\n",
    "    model,\n",
    "    r = lora_rank, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128\n",
    "    target_modules = [\n",
    "        \"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n",
    "        \"gate_proj\", \"up_proj\", \"down_proj\",\n",
    "    ],\n",
    "    lora_alpha = lora_rank*2, # *2 speeds up training\n",
    "    use_gradient_checkpointing = \"unsloth\", # Reduces memory usage\n",
    "    random_state = 3407,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "N0QnO9_YJBOI"
   },
   "source": [
    "# Sudoku Game Implementation\n",
    "\n",
    "We use GPT-5 to create a clean Sudoku solver environment. The strategy outputs \"row,col,value\" to fill cells."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "cellView": "form",
    "id": "D9CI4jtgL5mw"
   },
   "outputs": [],
   "source": [
    "#@title Sudoku Game Implementation\n",
    "from dataclasses import dataclass, field\n",
    "from typing import List, Tuple, Optional\n",
    "import random\n",
    "import copy\n",
    "\n",
    "def _is_valid_placement(board: List[List[int]], row: int, col: int, num: int) -> bool:\n",
    "    \"\"\"Check if placing num at (row, col) is valid.\"\"\"\n",
    "    # Check row\n",
    "    if num in board[row]:\n",
    "        return False\n",
    "\n",
    "    # Check column\n",
    "    if num in [board[r][col] for r in range(9)]:\n",
    "        return False\n",
    "\n",
    "    # Check 3x3 box\n",
    "    box_row, box_col = 3 * (row // 3), 3 * (col // 3)\n",
    "    for r in range(box_row, box_row + 3):\n",
    "        for c in range(box_col, box_col + 3):\n",
    "            if board[r][c] == num:\n",
    "                return False\n",
    "\n",
    "    return True\n",
    "\n",
    "def _solve_sudoku(board: List[List[int]]) -> bool:\n",
    "    \"\"\"Solve sudoku using backtracking (for puzzle generation).\"\"\"\n",
    "    for row in range(9):\n",
    "        for col in range(9):\n",
    "            if board[row][col] == 0:\n",
    "                for num in range(1, 10):\n",
    "                    if _is_valid_placement(board, row, col, num):\n",
    "                        board[row][col] = num\n",
    "                        if _solve_sudoku(board):\n",
    "                            return True\n",
    "                        board[row][col] = 0\n",
    "                return False\n",
    "    return True\n",
    "\n",
    "def _generate_complete_board(rng: random.Random) -> List[List[int]]:\n",
    "    \"\"\"Generate a complete valid Sudoku board.\"\"\"\n",
    "    board = [[0 for _ in range(9)] for _ in range(9)]\n",
    "\n",
    "    # Fill diagonal 3x3 boxes first (they don't affect each other)\n",
    "    for box in range(3):\n",
    "        nums = list(range(1, 10))\n",
    "        rng.shuffle(nums)\n",
    "        for i in range(3):\n",
    "            for j in range(3):\n",
    "                board[box * 3 + i][box * 3 + j] = nums[i * 3 + j]\n",
    "\n",
    "    # Solve the rest\n",
    "    _solve_sudoku(board)\n",
    "    return board\n",
    "\n",
    "@dataclass\n",
    "class SudokuGame:\n",
    "    difficulty: int = 40  # Number of cells to remove (20=easy, 40=medium, 50=hard)\n",
    "    seed: Optional[int] = None\n",
    "    _rng: random.Random = field(init=False, repr=False)\n",
    "    _board: List[List[int]] = field(init=False, repr=False)\n",
    "    _solution: List[List[int]] = field(init=False, repr=False)\n",
    "    _initial_board: List[List[int]] = field(init=False, repr=False)\n",
    "    _moves: int = field(default=0, init=False, repr=False)\n",
    "    _state: str = field(default=\"ongoing\", init=False, repr=False)\n",
    "\n",
    "    def __post_init__(self):\n",
    "        self._rng = random.Random(self.seed)\n",
    "\n",
    "        # Generate complete board\n",
    "        complete_board = _generate_complete_board(self._rng)\n",
    "        self._solution = copy.deepcopy(complete_board)\n",
    "\n",
    "        # Remove cells to create puzzle\n",
    "        self._board = copy.deepcopy(complete_board)\n",
    "        cells = [(r, c) for r in range(9) for c in range(9)]\n",
    "        self._rng.shuffle(cells)\n",
    "\n",
    "        for r, c in cells[:self.difficulty]:\n",
    "            self._board[r][c] = 0\n",
    "\n",
    "        self._initial_board = copy.deepcopy(self._board)\n",
    "        self._update_state()\n",
    "\n",
    "    def board(self) -> List[List[int]]:\n",
    "        \"\"\"Return current board state.\"\"\"\n",
    "        return [row[:] for row in self._board]\n",
    "\n",
    "    def initial_board(self) -> List[List[int]]:\n",
    "        \"\"\"Return initial puzzle state.\"\"\"\n",
    "        return [row[:] for row in self._initial_board]\n",
    "\n",
    "    def state(self) -> str:\n",
    "        \"\"\"Return game state: 'ongoing', 'success', or 'failed'.\"\"\"\n",
    "        return self._state\n",
    "\n",
    "    def moves(self) -> int:\n",
    "        \"\"\"Return number of moves made.\"\"\"\n",
    "        return self._moves\n",
    "\n",
    "    def place_number(self, row: int, col: int, num: int) -> bool:\n",
    "        \"\"\"Place a number on the board. Returns True if valid move.\"\"\"\n",
    "        # Validate input\n",
    "        if not (0 <= row < 9 and 0 <= col < 9):\n",
    "            self._state = \"failed\"\n",
    "            return False\n",
    "\n",
    "        if not (1 <= num <= 9):\n",
    "            self._state = \"failed\"\n",
    "            return False\n",
    "\n",
    "        # Can't modify initial cells\n",
    "        if self._initial_board[row][col] != 0:\n",
    "            self._state = \"failed\"\n",
    "            return False\n",
    "        if self._board[row][col] != 0:\n",
    "            self._state = \"failed\"\n",
    "            return False\n",
    "        # Check if placement is valid\n",
    "        if not _is_valid_placement(self._board, row, col, num):\n",
    "            self._state = \"failed\"\n",
    "            return False\n",
    "\n",
    "        # Place number\n",
    "        self._board[row][col] = num\n",
    "        self._moves += 1\n",
    "        self._update_state()\n",
    "        return True\n",
    "\n",
    "    def _update_state(self) -> None:\n",
    "        \"\"\"Update game state based on current board.\"\"\"\n",
    "        # Check if puzzle is complete\n",
    "        if all(self._board[r][c] != 0 for r in range(9) for c in range(9)):\n",
    "            # Verify solution is correct\n",
    "            if self._board == self._solution:\n",
    "                self._state = \"success\"\n",
    "            else:\n",
    "                self._state = \"failed\"\n",
    "        else:\n",
    "            self._state = \"ongoing\"\n",
    "\n",
    "    def pretty(self, colors: bool = True) -> str:\n",
    "        \"\"\"Pretty print the Sudoku board.\"\"\"\n",
    "        RESET = \"\\x1b[0m\"\n",
    "        INITIAL = \"\\x1b[38;5;45m\"   # Cyan for initial numbers\n",
    "        PLACED = \"\\x1b[38;5;226m\"    # Yellow for placed numbers\n",
    "        EMPTY = \"\\x1b[38;5;239m\"     # Gray for empty cells\n",
    "\n",
    "        lines = []\n",
    "        lines.append(\"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\")\n",
    "\n",
    "        for row in range(9):\n",
    "            row_str = \"\u2502 \"\n",
    "            for col in range(9):\n",
    "                num = self._board[row][col]\n",
    "\n",
    "                if colors:\n",
    "                    if num == 0:\n",
    "                        row_str += f\"{EMPTY}.{RESET}\"\n",
    "                    elif self._initial_board[row][col] != 0:\n",
    "                        row_str += f\"{INITIAL}{num}{RESET}\"\n",
    "                    else:\n",
    "                        row_str += f\"{PLACED}{num}{RESET}\"\n",
    "                else:\n",
    "                    row_str += str(num) if num != 0 else \".\"\n",
    "\n",
    "                if col % 3 == 2:\n",
    "                    row_str += \" \u2502 \"\n",
    "                else:\n",
    "                    row_str += \" \"\n",
    "\n",
    "            lines.append(row_str.rstrip())\n",
    "\n",
    "            if row == 8:\n",
    "                lines.append(\"\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\")\n",
    "            elif row % 3 == 2:\n",
    "                lines.append(\"\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\")\n",
    "\n",
    "        return \"\\n\".join(lines)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "BBPHTCLYFivc"
   },
   "source": [
    "Test the Sudoku environment:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "-M8kGaFRJ2ic",
    "outputId": "9acfda88-8c88-460f-d65c-d74c84e685f6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial puzzle:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "State: ongoing, Moves: 0\n"
     ]
    }
   ],
   "source": [
    "# Create an easy puzzle\n",
    "game = SudokuGame(difficulty=30, seed=42)\n",
    "print(\"Initial puzzle:\")\n",
    "print(game.pretty())\n",
    "print(f\"\\nState: {game.state()}, Moves: {game.moves()}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "zclUeNxosv4k",
    "outputId": "f55691bc-8244-4003-ece0-dc9d6c915586"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SudokuGame(difficulty=30, seed=42)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "game"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "envzrXmjKRff"
   },
   "source": [
    "Try making some moves:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "b-gSgthFI_wq",
    "outputId": "c9d50399-ba12-449c-e6f5-c94c24eefe91"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "After placing 7 at (1,0):\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "State: ongoing, Moves: 1\n"
     ]
    }
   ],
   "source": [
    "# Make a valid move\n",
    "game.place_number(0, 1, 7)\n",
    "print(\"\\nAfter placing 7 at (1,0):\")\n",
    "print(game.pretty())\n",
    "print(f\"State: {game.state()}, Moves: {game.moves()}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gGL1X29Fy4n5"
   },
   "source": [
    "If we do some other action that's not part of the action space, we will get an error, and the game will not accept anymore actions."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "VR6czU96cpxf"
   },
   "source": [
    "# RL Environment Setup\n",
    "\n",
    "Execute strategies with time limits to prevent infinite loops."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "tdgjnf-8z_kr"
   },
   "outputs": [],
   "source": [
    "from typing import Callable\n",
    "from unsloth import execute_with_time_limit\n",
    "\n",
    "def _execute_strategy(strategy: Callable, game: SudokuGame):\n",
    "    \"\"\"Execute a strategy function on a Sudoku game.\"\"\"\n",
    "    assert callable(strategy)\n",
    "\n",
    "    max_moves = 100\n",
    "    valid_moves = 0  # Track successful moves\n",
    "\n",
    "    while game.state() == \"ongoing\" and valid_moves < max_moves:\n",
    "        try:\n",
    "            board = game.board()\n",
    "            initial = game.initial_board()\n",
    "            result = strategy(board, initial)\n",
    "\n",
    "            # Validate result format\n",
    "            if not isinstance(result, (tuple, list)) or len(result) != 3:\n",
    "                # Invalid format = immediate fail, but return valid moves made\n",
    "                return valid_moves, \"failed\"\n",
    "\n",
    "            row, col, num = result\n",
    "\n",
    "            # Validate types\n",
    "            if not all(isinstance(x, int) for x in [row, col, num]):\n",
    "                return valid_moves, \"failed\"\n",
    "\n",
    "            # Try to place number\n",
    "            success = game.place_number(row, col, num)\n",
    "\n",
    "            if success:\n",
    "                valid_moves += 1  # Count this valid move\n",
    "            else:\n",
    "                # Invalid move = game fails, but return valid_moves made so far\n",
    "                return valid_moves, \"failed\"\n",
    "\n",
    "        except Exception:\n",
    "            return valid_moves, \"failed\"\n",
    "\n",
    "    if valid_moves >= max_moves and game.state() == \"ongoing\":\n",
    "        return valid_moves, \"failed\"\n",
    "\n",
    "    return valid_moves, game.state()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dkuHVdB09sgf"
   },
   "source": [
    "To allow longer strategies for Reinforcement Learning, we shall allow a 10 second timer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "SK-LfzsA9wbW"
   },
   "outputs": [],
   "source": [
    "@execute_with_time_limit(10)\n",
    "def execute_strategy(strategy: Callable, game: SudokuGame):\n",
    "    \"\"\"Execute strategy with 10 second time limit.\"\"\"\n",
    "    return _execute_strategy(strategy, game)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "p7t7XMulLkpy"
   },
   "source": [
    "Test with a simple strategy:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "VvwUzwSlLif2",
    "outputId": "82d5c805-61e4-4fb3-904b-09fb775b842b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Moves: 1, State: failed\n"
     ]
    }
   ],
   "source": [
    "def simple_strategy(board, initial):\n",
    "    \"\"\"Simple strategy: fill first empty cell with 1.\"\"\"\n",
    "    for r in range(9):\n",
    "        for c in range(9):\n",
    "            if board[r][c] == 0 and initial[r][c] == 0:\n",
    "                return (r, c, 7)\n",
    "    return (0, 0, 7)\n",
    "\n",
    "game = SudokuGame(difficulty=30, seed=42)\n",
    "try:\n",
    "    moves, state = execute_strategy(simple_strategy, game)\n",
    "    print(f\"Moves: {moves}, State: {state}\")\n",
    "except TimeoutError as e:\n",
    "    print(f\"Timed out: {e}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "FWN9b9TAk89-",
    "outputId": "592e72ba-4bee-428c-87b1-ba9732b1a320"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"
     ]
    }
   ],
   "source": [
    "print(game.pretty())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tRhLV_bZMYxy"
   },
   "source": [
    "# Code Execution\n",
    "\n",
    "To execute and create a new Python function, we first have to check if the function does not call other global variables or cheat. This is called `countering reward hacking` since we don't want the function to cheat.\n",
    "\n",
    "For example the below piece of code is fine, since it only imports Python level functions. We use `check_python_modules`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "zz80kvg6M4BG",
    "outputId": "24ec3c17-7c79-455b-b17f-e2efc25f3768"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Safe Python code? True\n",
      "{'stdlib': [], 'non_stdlib': [], 'relative_imports': 0}\n"
     ]
    }
   ],
   "source": [
    "from unsloth import check_python_modules, create_locked_down_function\n",
    "\n",
    "# Test safe code\n",
    "sample = \"\"\"\n",
    "def strategy(board, initial):\n",
    "    for r in range(9):\n",
    "        for c in range(9):\n",
    "            if board[r][c] == 0:\n",
    "                return (r, c, 1)\n",
    "    return (0, 0, 1)\n",
    "\"\"\"\n",
    "\n",
    "ok, info = check_python_modules(sample)\n",
    "print(\"Safe Python code?\", ok)\n",
    "print(info)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "bZzVWgKQ-VIg"
   },
   "source": [
    "For the below piece of code, since we import `numpy`, we should not allow the execution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Z89Jw1KB-Ux7",
    "outputId": "eaa69a71-0954-4306-a513-5881beac9ee2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Safe Python code? False\n",
      "{'stdlib': [], 'non_stdlib': ['numpy'], 'relative_imports': 0}\n"
     ]
    }
   ],
   "source": [
    "sample = \"\"\"\n",
    "def strategy(board, initial):\n",
    "    import numpy as np\n",
    "    return (0, 0, 1)\n",
    "\"\"\"\n",
    "\n",
    "ok, info = check_python_modules(sample)\n",
    "print(\"Safe Python code?\", ok)\n",
    "print(info)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8CzwCyXIPK04"
   },
   "source": [
    "# Data & RL task setup\n",
    "\n",
    "Create the prompt that instructs the model to generate a Sudoku solving strategy. You can customize this to some other task for another RL task.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "B-2RRE4HMrQO",
    "outputId": "e8813430-1b73-4192-cdfc-e812d18cbdc5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Create a Sudoku solving strategy using only native Python built-in functions without any import statements.\n",
      "You are given two lists of lists (9x9 grids):\n",
      "- board: current state (0 means empty)\n",
      "- initial: starting puzzle (0 means was empty, numbers are fixed)\n",
      "\n",
      "Return a tuple (row, col, number) for the next move.\n",
      "- row: 0-8 (row index)\n",
      "- col: 0-8 (column index)\n",
      "- number: 1-9 (digit to place)\n",
      "\n",
      "Only place numbers in cells that are BOTH empty in initial AND empty in board (initial[row][col] == 0 AND board[row][col] == 0)\n",
      "Use Sudoku rules: no duplicates in rows, columns, or 3x3 boxes.\n",
      "Output your function in backticks:\n",
      "```python\n",
      "def strategy(board, initial):\n",
      "    # Your logic here\n",
      "    return (row, col, number)\n",
      "```\n",
      "All helper functions must be inside def strategy. Output only the function.\n"
     ]
    }
   ],
   "source": [
    "prompt = \"\"\"\n",
    "Create a Sudoku solving strategy using only native Python built-in functions without any import statements.\n",
    "You are given two lists of lists (9x9 grids):\n",
    "- board: current state (0 means empty)\n",
    "- initial: starting puzzle (0 means was empty, numbers are fixed)\n",
    "\n",
    "Return a tuple (row, col, number) for the next move.\n",
    "- row: 0-8 (row index)\n",
    "- col: 0-8 (column index)\n",
    "- number: 1-9 (digit to place)\n",
    "\n",
    "Only place numbers in cells that are BOTH empty in initial AND empty in board (initial[row][col] == 0 AND board[row][col] == 0)\n",
    "Use Sudoku rules: no duplicates in rows, columns, or 3x3 boxes.\n",
    "Output your function in backticks:\n",
    "```python\n",
    "def strategy(board, initial):\n",
    "    # Your logic here\n",
    "    return (row, col, number)\n",
    "```\n",
    "All helper functions must be inside def strategy. Output only the function.\n",
    "\"\"\".strip()\n",
    "\n",
    "print(prompt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MIdudFUodN4i"
   },
   "source": [
    "First, let's prompt the model without RL and see how it goes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "9HJxrS76h3Ds",
    "outputId": "cb75c3f7-cc78-48fd-ec30-d9596880331b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "==================================================\n",
      "BASE MODEL OUTPUT (before RL training):\n",
      "==================================================\n",
      "<s><s>[SYSTEM_PROMPT]You are Ministral-3-3B-Instruct-2512, a Large Language Model (LLM) created by Mistral AI, a French startup headquartered in Paris.\n",
      "You power an AI assistant called Le Chat.\n",
      "Your knowledge base was last updated on 2023-10-01.\n",
      "The current date is {today}.\n",
      "\n",
      "When you're not sure about some information or when the user's request requires up-to-date or specific data, you must use the available tools to fetch the information. Do not hesitate to use tools whenever they can provide a more accurate or complete response. If no relevant tools are available, then clearly state that you don't have the information and avoid making up anything.\n",
      "If the user's question is not clear, ambiguous, or does not provide enough context for you to accurately answer the question, you do not try to answer it right away and you rather ask the user to clarify their request (e.g. \"What are some good restaurants around me?\" => \"Where are you?\" or \"When is the next flight to Tokyo\" => \"Where do you travel from?\").\n",
      "You are always very attentive to dates, in particular you try to resolve dates (e.g. \"yesterday\" is {yesterday}) and when asked about information at specific dates, you discard information that is at another date.\n",
      "You follow these instructions in all languages, and always respond to the user in the language they use or request.\n",
      "Next sections describe the capabilities that you have.\n",
      "\n",
      "# WEB BROWSING INSTRUCTIONS\n",
      "\n",
      "You cannot perform any web search or access internet to open URLs, links etc. If it seems like the user is expecting you to do so, you clarify the situation and ask the user to copy paste the text directly in the chat.\n",
      "\n",
      "# MULTI-MODAL INSTRUCTIONS\n",
      "\n",
      "You have the ability to read images, but you cannot generate images. You also cannot transcribe audio files or videos.\n",
      "You cannot read nor transcribe audio files or videos.\n",
      "\n",
      "# TOOL CALLING INSTRUCTIONS\n",
      "\n",
      "You may have access to tools that you can use to fetch information or perform actions. You must use these tools in the following situations:\n",
      "\n",
      "1. When the request requires up-to-date information.\n",
      "2. When the request requires specific data that you do not have in your knowledge base.\n",
      "3. When the request involves actions that you cannot perform without tools.\n",
      "\n",
      "Always prioritize using tools to provide the most accurate and helpful response. If tools are not available, inform the user that you cannot perform the requested action at the moment.[/SYSTEM_PROMPT][INST]Create a Sudoku solving strategy using only native Python built-in functions without any import statements.\n",
      "You are given two lists of lists (9x9 grids):\n",
      "- board: current state (0 means empty)\n",
      "- initial: starting puzzle (0 means was empty, numbers are fixed)\n",
      "\n",
      "Return a tuple (row, col, number) for the next move.\n",
      "- row: 0-8 (row index)\n",
      "- col: 0-8 (column index)\n",
      "- number: 1-9 (digit to place)\n",
      "\n",
      "Only place numbers in cells that are BOTH empty in initial AND empty in board (initial[row][col] == 0 AND board[row][col] == 0)\n",
      "Use Sudoku rules: no duplicates in rows, columns, or 3x3 boxes.\n",
      "Output your function in backticks:\n",
      "```python\n",
      "def strategy(board, initial):\n",
      "    # Your logic here\n",
      "    return (row, col, number)\n",
      "```\n",
      "All helper functions must be inside def strategy. Output only the function.[/INST]Here's a Sudoku-solving strategy using only native Python built-in functions:\n",
      "\n",
      "```python\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, num):\n",
      "        # Check row\n",
      "        if num in board[row]:\n",
      "            return False\n",
      "        # Check column\n",
      "        if any(board[i][col] == num for i in range(9)):\n",
      "            return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = 3 * (row // 3), 3 * (col // 3)\n",
      "        if any(board[i][j] == num for i in range(box_row, box_row + 3)\n",
      "               for j in range(box_col, box_col + 3)):\n",
      "            return False\n",
      "        return True\n",
      "\n",
      "    def find_empty():\n",
      "        for row in range(9):\n",
      "            for col in range(9):\n",
      "                if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                    for num in range(1, 10):\n",
      "                        if is_valid(row, col, num):\n",
      "                            return (row, col, num)\n",
      "        return None\n",
      "\n",
      "    return find_empty()\n",
      "```</s>\n"
     ]
    }
   ],
   "source": [
    "text = tokenizer.apply_chat_template(\n",
    "    [{\"role\": \"user\", \"content\": prompt.strip()}],\n",
    "    tokenize = False,\n",
    "    add_generation_prompt = True,\n",
    ")\n",
    "\n",
    "from transformers import TextStreamer\n",
    "print(\"=\" * 50)\n",
    "print(\"BASE MODEL OUTPUT (before RL training):\")\n",
    "print(\"=\" * 50)\n",
    "_ = model.generate(\n",
    "    **tokenizer(images=None,text=text, return_tensors = \"pt\").to(\"cuda\"),\n",
    "    temperature = 1.0,\n",
    "    max_new_tokens = 512,\n",
    "    streamer = TextStreamer(tokenizer, skip_prompt = False),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "iknaWZNudTNq"
   },
   "source": [
    "# Reward functions\n",
    "\n",
    "We now design a `extract_function` function which simply extracts the function wrapped in 3 back ticks.\n",
    "\n",
    "And 3 reward functions:\n",
    "\n",
    "1. `function_works` which rewards the model if the strategy is a valid Python function.\n",
    "2. `no_cheating` which checks if the function imported other modules, and if it did, we penalize it.\n",
    "3. `strategy_succeeds` which checks if the game strategy actually succeeds in attaining Sudoku after running the auto-generated strategy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "8JJGXKdJ-Zl_"
   },
   "outputs": [],
   "source": [
    "def extract_function(text):\n",
    "    \"\"\"Extract Python function from markdown code blocks.\"\"\"\n",
    "    if text.count(\"```\") >= 2:\n",
    "        first = text.find(\"```\") + 3\n",
    "        second = text.find(\"```\", first)\n",
    "        fx = text[first:second].strip()\n",
    "        fx = fx.removeprefix(\"python\\n\")\n",
    "        fx = fx[fx.find(\"def\"):]\n",
    "        if fx.startswith(\"def strategy(board, initial):\"):\n",
    "            return fx\n",
    "    return None"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KLXEcf_HSJlI"
   },
   "source": [
    "**Reward 1: Function Works**\n",
    "\n",
    "Checks if the generated code is valid Python and can be executed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "h3-B0IIsS56S"
   },
   "outputs": [],
   "source": [
    "def function_works(completions, **kwargs):\n",
    "    \"\"\"Reward for generating valid executable Python code.\"\"\"\n",
    "    scores = []\n",
    "    for completion in completions:\n",
    "        score = 0\n",
    "        response = completion[0][\"content\"]\n",
    "        function = extract_function(response)\n",
    "\n",
    "        if function is not None:\n",
    "            ok, info = check_python_modules(function)\n",
    "\n",
    "        if function is None or \"error\" in info:\n",
    "            score = -2.0  # Invalid function\n",
    "        else:\n",
    "            try:\n",
    "                new_strategy = create_locked_down_function(function)\n",
    "                score = 1.0  # Valid function\n",
    "            except:\n",
    "                score = -1.0  # Function has errors\n",
    "\n",
    "        scores.append(score)\n",
    "    return scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "SDyEfDGjM6_2"
   },
   "source": [
    "**Reward 2: No Cheating**\n",
    "\n",
    "Penalizes functions that import external libraries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "uGPkLhqjM-jK"
   },
   "outputs": [],
   "source": [
    "def no_cheating(completions, **kwargs):\n",
    "    \"\"\"Penalize use of external imports.\"\"\"\n",
    "    scores = []\n",
    "    for completion in completions:\n",
    "        response = completion[0][\"content\"]\n",
    "        function = extract_function(response)\n",
    "\n",
    "        if function is not None:\n",
    "            ok, info = check_python_modules(function)\n",
    "            scores.append(1.0 if ok else -20.0)  # Heavy penalty for cheating\n",
    "        else:\n",
    "            scores.append(-1.0)  # Failed to create function\n",
    "\n",
    "    return scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FRgHkfQ4M_d9"
   },
   "source": [
    "**Reward 3: Strategy Succeeds**\n",
    "\n",
    "Rewards strategies that successfully solve Sudoku puzzles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "sSM7ya5aNFGh"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "global PRINTER\n",
    "PRINTER = 0\n",
    "\n",
    "def strategy_succeeds(completions, **kwargs):\n",
    "    \"\"\"Reward valid moves even if strategy eventually fails.\"\"\"\n",
    "    global PRINTER\n",
    "    scores = []\n",
    "\n",
    "    seed = np.random.randint(10000)\n",
    "    difficulty = 35\n",
    "    for completion in completions:\n",
    "        printed = False\n",
    "        response = completion[0][\"content\"]\n",
    "        function = extract_function(response)\n",
    "\n",
    "        if PRINTER % 5 == 0:\n",
    "            printed = True\n",
    "            print(\"\\n\" + \"=\" * 60)\n",
    "            print(function)\n",
    "            print(\"=\" * 60)\n",
    "        PRINTER += 1\n",
    "\n",
    "        if function is not None:\n",
    "            ok, info = check_python_modules(function)\n",
    "\n",
    "        if function is None or \"error\" in info:\n",
    "            scores.append(0)\n",
    "            continue\n",
    "\n",
    "        try:\n",
    "            new_strategy = create_locked_down_function(function)\n",
    "        except:\n",
    "            scores.append(0)\n",
    "            continue\n",
    "\n",
    "        try:\n",
    "            game = SudokuGame(difficulty=difficulty, seed=seed)\n",
    "            valid_moves, game_state = execute_strategy(new_strategy, game)\n",
    "            if valid_moves == difficulty:\n",
    "                game_state = \"success\"\n",
    "\n",
    "            print(f\"\\n Valid moves: {valid_moves}, Final state: {game_state}\")\n",
    "\n",
    "            if not printed:\n",
    "                print(\"Strategy:\")\n",
    "                print(function[:200] + \"...\" if len(function) > 200 else function)\n",
    "\n",
    "            print(\"\\nFinal board:\")\n",
    "            print(game.pretty())\n",
    "\n",
    "            if game_state == \"success\":\n",
    "                scores.append(30.0)  # Solved the puzzle!\n",
    "            elif valid_moves > 0:\n",
    "                # Reward based on valid moves made before failure\n",
    "                # Each valid move is worth 0.2 points\n",
    "                reward = valid_moves * 0.2\n",
    "                scores.append(reward)\n",
    "            else:\n",
    "                scores.append(-2.0)  # Failed immediately with no valid moves\n",
    "\n",
    "        except TimeoutError:\n",
    "            print(\"Timeout\")\n",
    "            scores.append(-1.0)\n",
    "        except Exception as e:\n",
    "            print(f\"Exception: {str(e)[:100]}\")\n",
    "            scores.append(-3.0)\n",
    "\n",
    "    return scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "TCpSxtvSeAG_"
   },
   "source": [
    "# Dataset Preparation\n",
    "\n",
    "Create the training dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Ldf6SjLHVPRv",
    "outputId": "ff4ca3b2-59be-4056-fd82-dcbc036f35d6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Maximum prompt length: 3245\n",
      "\n",
      "Dataset sample:\n",
      "{'prompt': [{'content': 'Create a Sudoku solving strategy using only native Python built-in functions without any import statements.\\nYou are given two lists of lists (9x9 grids):\\n- board: current state (0 means empty)\\n- initial: starting puzzle (0 means was empty, numbers are fixed)\\n\\nReturn a tuple (row, col, number) for the next move.\\n- row: 0-8 (row index)\\n- col: 0-8 (column index)\\n- number: 1-9 (digit to place)\\n\\nOnly place numbers in cells that are BOTH empty in initial AND empty in board (initial[row][col] == 0 AND board[row][col] == 0)\\nUse Sudoku rules: no duplicates in rows, columns, or 3x3 boxes.\\nOutput your function in backticks:\\n```python\\ndef strategy(board, initial):\\n    # Your logic here\\n    return (row, col, number)\\n```\\nAll helper functions must be inside def strategy. Output only the function.', 'role': 'user'}], 'answer': 0}\n"
     ]
    }
   ],
   "source": [
    "from datasets import Dataset\n",
    "\n",
    "dataset = Dataset.from_list([\n",
    "    {\n",
    "        \"prompt\": [{\"role\": \"user\", \"content\": prompt.strip()}],\n",
    "        \"answer\": 0,\n",
    "    }\n",
    "] * 1000)\n",
    "\n",
    "maximum_length = len(tokenizer.apply_chat_template(\n",
    "    [{\"role\": \"user\", \"content\": prompt.strip()}],\n",
    "    add_generation_prompt=True\n",
    "))\n",
    "\n",
    "print(f\"Maximum prompt length: {maximum_length}\")\n",
    "print(\"\\nDataset sample:\")\n",
    "print(dataset[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9-IOMhVg-2AM"
   },
   "source": [
    "<a name=\"Train\"></a>\n",
    "### Train the model\n",
    "\n",
    "Now set up GRPO Trainer and all configurations! We also support GSPO, GAPO, Dr GRPO and more! Go the Unsloth [Reinforcement Learning Docs](https://docs.unsloth.ai/get-started/reinforcement-learning-rl-guide) for more options."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ptqkXK2D4d6p",
    "outputId": "7d704f31-705c-4be5-f002-db810cd07bcf"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "warmup_ratio is deprecated and will be removed in v5.2. Use `warmup_steps` instead.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unsloth: We now expect `per_device_train_batch_size` * `gradient_accumulation_steps` * `world_size` to be a multiple of `num_generations`.\n",
      "We will change the batch size of 1 to the `num_generations` of 4\n"
     ]
    }
   ],
   "source": [
    "max_prompt_length = maximum_length + 1 # + 1 just in case!\n",
    "max_completion_length = max_seq_length - max_prompt_length\n",
    "\n",
    "from trl import GRPOConfig, GRPOTrainer\n",
    "training_args = GRPOConfig(\n",
    "    temperature = 1.0,\n",
    "    learning_rate = 5e-5,\n",
    "    weight_decay = 0.001,\n",
    "    warmup_ratio = 0.1,\n",
    "    lr_scheduler_type = \"linear\",\n",
    "    optim = \"adamw_8bit\",\n",
    "    logging_steps = 1,\n",
    "    per_device_train_batch_size = 1,\n",
    "    gradient_accumulation_steps = 1, # Increase to 4 for smoother training\n",
    "    num_generations = 4, # Decrease if out of memory\n",
    "    max_prompt_length = max_prompt_length,\n",
    "    max_completion_length = max_completion_length,\n",
    "    # num_train_epochs = 1, # Set to 1 for a full training run\n",
    "    max_steps = 200,\n",
    "    save_steps = 100,\n",
    "    report_to = \"none\", # Can use Weights & Biases, TrackIO\n",
    "    output_dir = \"outputs\",\n",
    "\n",
    "    # For optional training + evaluation\n",
    "    # fp16_full_eval = True,\n",
    "    # per_device_eval_batch_size = 4,\n",
    "    # eval_accumulation_steps = 1,\n",
    "    # eval_strategy = \"steps\",\n",
    "    # eval_steps = 1,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "r9Mv8UZO5hz-"
   },
   "source": [
    "And let's run the trainer! If you scroll up, you'll see a table of rewards. The goal is to see the `reward` column increase!\n",
    "\n",
    "You might have to wait 150 to 200 steps for any action. You'll probably get low reward for the first 100 steps. Please be patient!\n",
    "\n",
    "| Step | Training Loss | reward    | reward_std | completion_length | kl       |\n",
    "|------|---------------|-----------|------------|-------------------|----------|\n",
    "| 1    | 0.000000      | 0.125000  | 0.000000   | 200.000000        | 0.000000 |\n",
    "| 2    | 0.000000      | 0.072375  | 0.248112   | 200.000000        | 0.000000 |\n",
    "| 3    | 0.000000      | -0.079000 | 0.163776   | 182.500000        | 0.000005 |\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "vzOuSVCL_GA9"
   },
   "outputs": [],
   "source": [
    "# For optional training + evaluation\n",
    "# new_dataset = dataset.train_test_split(test_size = 0.01)\n",
    "\n",
    "trainer = GRPOTrainer(\n",
    "    model = model,\n",
    "    processing_class = tokenizer,\n",
    "    reward_funcs = [\n",
    "        function_works,\n",
    "        no_cheating,\n",
    "        strategy_succeeds,\n",
    "    ],\n",
    "    args = training_args,\n",
    "    train_dataset = dataset,\n",
    "\n",
    "    # For optional training + evaluation\n",
    "    # train_dataset = new_dataset[\"train\"],\n",
    "    # eval_dataset = new_dataset[\"test\"],\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "fQhtuwP4cf34"
   },
   "source": [
    "And let's train the model!\n",
    "\n",
    "**NOTE** A T4 free GPU might take 5 minutes for one generation sadly since it's an old GPU - A100 or H100 will be much faster!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "id": "VGRxPdSCcfC3",
    "outputId": "954a593a-d2f2-42fe-ed5e-cc976ec37db2"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The model is already on multiple devices. Skipping the move to device specified in `args`.\n",
      "==((====))==  Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
      "   \\\\   /|    Num examples = 1,000 | Num Epochs = 1 | Total steps = 200\n",
      "O^O/ \\_/ \\    Batch size per device = 4 | Gradient accumulation steps = 1\n",
      "\\        /    Data Parallel GPUs = 1 | Total batch size (4 x 1 x 1) = 4\n",
      " \"-____-\"     Trainable parameters = 67,502,080 of 3,916,592,128 (1.72% trained)\n",
      "`generation_config` default values have been modified to match model-specific defaults: {'max_length': 262144}. If this is not desired, please set these values explicitly.\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      \n",
       "      <progress value='200' max='200' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      [200/200 2:05:09, Epoch 0/1]\n",
       "    </div>\n",
       "    <table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       " <tr style=\"text-align: left;\">\n",
       "      <th>Step</th>\n",
       "      <th>Training Loss</th>\n",
       "      <th>reward</th>\n",
       "      <th>reward_std</th>\n",
       "      <th>completions / mean_length</th>\n",
       "      <th>completions / min_length</th>\n",
       "      <th>completions / max_length</th>\n",
       "      <th>completions / clipped_ratio</th>\n",
       "      <th>completions / mean_terminated_length</th>\n",
       "      <th>completions / min_terminated_length</th>\n",
       "      <th>completions / max_terminated_length</th>\n",
       "      <th>kl</th>\n",
       "      <th>rewards / function_works / mean</th>\n",
       "      <th>rewards / function_works / std</th>\n",
       "      <th>rewards / no_cheating / mean</th>\n",
       "      <th>rewards / no_cheating / std</th>\n",
       "      <th>rewards / strategy_succeeds / mean</th>\n",
       "      <th>rewards / strategy_succeeds / std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>-0.000000</td>\n",
       "      <td>1.600000</td>\n",
       "      <td>4.298837</td>\n",
       "      <td>522.250000</td>\n",
       "      <td>319.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>413.000000</td>\n",
       "      <td>319.000000</td>\n",
       "      <td>558.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.850000</td>\n",
       "      <td>3.065398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>-0.000000</td>\n",
       "      <td>-7.000000</td>\n",
       "      <td>10.099504</td>\n",
       "      <td>676.000000</td>\n",
       "      <td>479.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>502.000000</td>\n",
       "      <td>479.000000</td>\n",
       "      <td>525.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-1.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-5.250000</td>\n",
       "      <td>9.878428</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>-5.400000</td>\n",
       "      <td>11.371308</td>\n",
       "      <td>555.250000</td>\n",
       "      <td>337.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>457.000000</td>\n",
       "      <td>337.000000</td>\n",
       "      <td>624.000000</td>\n",
       "      <td>0.001629</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-4.750000</td>\n",
       "      <td>10.210289</td>\n",
       "      <td>-0.150000</td>\n",
       "      <td>1.398809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0.000023</td>\n",
       "      <td>1.650000</td>\n",
       "      <td>4.385962</td>\n",
       "      <td>722.000000</td>\n",
       "      <td>494.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>679.333374</td>\n",
       "      <td>494.000000</td>\n",
       "      <td>832.000000</td>\n",
       "      <td>0.023117</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.900000</td>\n",
       "      <td>3.160169</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>0.000146</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.449490</td>\n",
       "      <td>740.250000</td>\n",
       "      <td>413.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>630.500000</td>\n",
       "      <td>413.000000</td>\n",
       "      <td>848.000000</td>\n",
       "      <td>0.145891</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>0.000701</td>\n",
       "      <td>-0.700000</td>\n",
       "      <td>4.600000</td>\n",
       "      <td>626.250000</td>\n",
       "      <td>310.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>402.500000</td>\n",
       "      <td>310.000000</td>\n",
       "      <td>495.000000</td>\n",
       "      <td>0.701149</td>\n",
       "      <td>-1.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.050000</td>\n",
       "      <td>2.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>0.001379</td>\n",
       "      <td>2.750000</td>\n",
       "      <td>5.152022</td>\n",
       "      <td>522.500000</td>\n",
       "      <td>276.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>413.333344</td>\n",
       "      <td>276.000000</td>\n",
       "      <td>551.000000</td>\n",
       "      <td>1.378505</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.691432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>0.000856</td>\n",
       "      <td>-1.100000</td>\n",
       "      <td>26.108236</td>\n",
       "      <td>649.250000</td>\n",
       "      <td>289.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>448.500000</td>\n",
       "      <td>289.000000</td>\n",
       "      <td>608.000000</td>\n",
       "      <td>0.856263</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-9.500000</td>\n",
       "      <td>12.124355</td>\n",
       "      <td>8.900000</td>\n",
       "      <td>14.312233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.001220</td>\n",
       "      <td>-2.250000</td>\n",
       "      <td>14.150971</td>\n",
       "      <td>572.500000</td>\n",
       "      <td>290.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>295.000000</td>\n",
       "      <td>290.000000</td>\n",
       "      <td>300.000000</td>\n",
       "      <td>1.220453</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-4.750000</td>\n",
       "      <td>10.210289</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.464102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.000190</td>\n",
       "      <td>-7.000000</td>\n",
       "      <td>10.099504</td>\n",
       "      <td>815.000000</td>\n",
       "      <td>710.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>710.000000</td>\n",
       "      <td>710.000000</td>\n",
       "      <td>710.000000</td>\n",
       "      <td>0.190078</td>\n",
       "      <td>-1.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-5.250000</td>\n",
       "      <td>9.878428</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.000282</td>\n",
       "      <td>-2.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>785.500000</td>\n",
       "      <td>592.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>592.000000</td>\n",
       "      <td>592.000000</td>\n",
       "      <td>592.000000</td>\n",
       "      <td>0.281709</td>\n",
       "      <td>-1.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.000653</td>\n",
       "      <td>6.700000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>283.500000</td>\n",
       "      <td>262.000000</td>\n",
       "      <td>328.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>283.500000</td>\n",
       "      <td>262.000000</td>\n",
       "      <td>328.000000</td>\n",
       "      <td>0.652989</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.700000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.001860</td>\n",
       "      <td>11.050000</td>\n",
       "      <td>26.130632</td>\n",
       "      <td>412.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>850.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>266.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>319.000000</td>\n",
       "      <td>1.859871</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-4.250000</td>\n",
       "      <td>10.500000</td>\n",
       "      <td>15.050000</td>\n",
       "      <td>17.262966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.001702</td>\n",
       "      <td>13.400000</td>\n",
       "      <td>12.400000</td>\n",
       "      <td>438.250000</td>\n",
       "      <td>252.000000</td>\n",
       "      <td>816.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>438.250000</td>\n",
       "      <td>252.000000</td>\n",
       "      <td>816.000000</td>\n",
       "      <td>1.701726</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>11.400000</td>\n",
       "      <td>12.400001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.001794</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.576820</td>\n",
       "      <td>407.250000</td>\n",
       "      <td>257.000000</td>\n",
       "      <td>766.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>407.250000</td>\n",
       "      <td>257.000000</td>\n",
       "      <td>766.000000</td>\n",
       "      <td>1.794006</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.576820</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.000570</td>\n",
       "      <td>1.950000</td>\n",
       "      <td>1.300000</td>\n",
       "      <td>255.500000</td>\n",
       "      <td>237.000000</td>\n",
       "      <td>281.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>255.500000</td>\n",
       "      <td>237.000000</td>\n",
       "      <td>281.000000</td>\n",
       "      <td>0.569755</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.050000</td>\n",
       "      <td>1.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.000539</td>\n",
       "      <td>-3.550000</td>\n",
       "      <td>13.183197</td>\n",
       "      <td>256.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>284.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>256.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>284.000000</td>\n",
       "      <td>0.539465</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-4.750000</td>\n",
       "      <td>10.210289</td>\n",
       "      <td>1.700000</td>\n",
       "      <td>3.268027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.001738</td>\n",
       "      <td>10.100000</td>\n",
       "      <td>14.624637</td>\n",
       "      <td>325.750000</td>\n",
       "      <td>206.000000</td>\n",
       "      <td>554.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>325.750000</td>\n",
       "      <td>206.000000</td>\n",
       "      <td>554.000000</td>\n",
       "      <td>1.737662</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>8.100000</td>\n",
       "      <td>14.624637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.001230</td>\n",
       "      <td>4.100000</td>\n",
       "      <td>4.734272</td>\n",
       "      <td>293.750000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>373.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>293.750000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>373.000000</td>\n",
       "      <td>1.229573</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.600000</td>\n",
       "      <td>4.236351</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>0.000511</td>\n",
       "      <td>4.600000</td>\n",
       "      <td>4.075946</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>208.000000</td>\n",
       "      <td>246.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>208.000000</td>\n",
       "      <td>246.000000</td>\n",
       "      <td>0.510625</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.600000</td>\n",
       "      <td>4.075946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21</td>\n",
       "      <td>0.000792</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>232.500000</td>\n",
       "      <td>195.000000</td>\n",
       "      <td>272.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>232.500000</td>\n",
       "      <td>195.000000</td>\n",
       "      <td>272.000000</td>\n",
       "      <td>0.791645</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22</td>\n",
       "      <td>0.000410</td>\n",
       "      <td>6.100000</td>\n",
       "      <td>2.200000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>254.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>254.000000</td>\n",
       "      <td>0.410312</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.100000</td>\n",
       "      <td>2.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23</td>\n",
       "      <td>0.000536</td>\n",
       "      <td>2.200000</td>\n",
       "      <td>6.004443</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>207.000000</td>\n",
       "      <td>243.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>207.000000</td>\n",
       "      <td>243.000000</td>\n",
       "      <td>0.536220</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.154701</td>\n",
       "      <td>2.700000</td>\n",
       "      <td>3.117692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24</td>\n",
       "      <td>0.000650</td>\n",
       "      <td>3.800000</td>\n",
       "      <td>4.387862</td>\n",
       "      <td>221.250000</td>\n",
       "      <td>181.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.250000</td>\n",
       "      <td>181.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.650415</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.300000</td>\n",
       "      <td>3.897007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>0.000433</td>\n",
       "      <td>6.150000</td>\n",
       "      <td>2.500000</td>\n",
       "      <td>233.250000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>233.250000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.433544</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.150000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>0.001075</td>\n",
       "      <td>4.250000</td>\n",
       "      <td>3.746554</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>178.000000</td>\n",
       "      <td>273.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>178.000000</td>\n",
       "      <td>273.000000</td>\n",
       "      <td>1.074851</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.750000</td>\n",
       "      <td>3.061046</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27</td>\n",
       "      <td>0.001267</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>273.250000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>358.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>273.250000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>358.000000</td>\n",
       "      <td>1.267027</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28</td>\n",
       "      <td>0.000453</td>\n",
       "      <td>4.550000</td>\n",
       "      <td>4.083707</td>\n",
       "      <td>209.750000</td>\n",
       "      <td>170.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>209.750000</td>\n",
       "      <td>170.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.453229</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.550000</td>\n",
       "      <td>4.083708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29</td>\n",
       "      <td>0.000476</td>\n",
       "      <td>6.150000</td>\n",
       "      <td>4.100000</td>\n",
       "      <td>234.750000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>234.750000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.476092</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.150000</td>\n",
       "      <td>4.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30</td>\n",
       "      <td>0.000250</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>235.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>244.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>235.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>244.000000</td>\n",
       "      <td>0.249522</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31</td>\n",
       "      <td>0.000211</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>2.400000</td>\n",
       "      <td>239.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>239.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.210909</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.600000</td>\n",
       "      <td>2.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32</td>\n",
       "      <td>0.000170</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>14.800000</td>\n",
       "      <td>233.500000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>233.500000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.169977</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-4.250000</td>\n",
       "      <td>10.500000</td>\n",
       "      <td>4.200000</td>\n",
       "      <td>2.800000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33</td>\n",
       "      <td>0.000102</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.102176</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>34</td>\n",
       "      <td>0.029333</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>248.250000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>292.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>248.250000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>292.000000</td>\n",
       "      <td>29.332880</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>35</td>\n",
       "      <td>0.000486</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>3.200000</td>\n",
       "      <td>236.750000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>236.750000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.486522</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>3.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>36</td>\n",
       "      <td>0.000220</td>\n",
       "      <td>5.550000</td>\n",
       "      <td>3.700000</td>\n",
       "      <td>245.750000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>278.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>245.750000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>278.000000</td>\n",
       "      <td>0.220045</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.550000</td>\n",
       "      <td>3.700000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>37</td>\n",
       "      <td>0.000186</td>\n",
       "      <td>6.900000</td>\n",
       "      <td>2.200000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>232.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>232.000000</td>\n",
       "      <td>0.186056</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.900000</td>\n",
       "      <td>2.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>38</td>\n",
       "      <td>0.001616</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>232.250000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>253.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>232.250000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>253.000000</td>\n",
       "      <td>1.616130</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39</td>\n",
       "      <td>0.001015</td>\n",
       "      <td>6.250000</td>\n",
       "      <td>2.700000</td>\n",
       "      <td>233.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>233.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>1.014826</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.250000</td>\n",
       "      <td>2.700000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40</td>\n",
       "      <td>0.000133</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.500000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>243.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.500000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>243.000000</td>\n",
       "      <td>0.133149</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>41</td>\n",
       "      <td>0.000236</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.500000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.500000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>0.236274</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>42</td>\n",
       "      <td>0.000109</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.108984</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43</td>\n",
       "      <td>0.000159</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.159258</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>44</td>\n",
       "      <td>0.000284</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.250000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.250000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.283883</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>45</td>\n",
       "      <td>0.000134</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.500000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.500000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.134169</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>46</td>\n",
       "      <td>0.000087</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.086813</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>0.000131</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.131158</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>48</td>\n",
       "      <td>0.000188</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.188376</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>49</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.117363</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50</td>\n",
       "      <td>0.000365</td>\n",
       "      <td>4.950000</td>\n",
       "      <td>4.346263</td>\n",
       "      <td>250.250000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>266.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>250.250000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>266.000000</td>\n",
       "      <td>0.365438</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.950000</td>\n",
       "      <td>4.346262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>51</td>\n",
       "      <td>0.000432</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>0.431838</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>52</td>\n",
       "      <td>0.000383</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.383250</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>53</td>\n",
       "      <td>0.000242</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.750000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.750000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.242424</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>54</td>\n",
       "      <td>0.000662</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.662439</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>4.650000</td>\n",
       "      <td>3.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>55</td>\n",
       "      <td>0.000293</td>\n",
       "      <td>5.250000</td>\n",
       "      <td>5.500000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.293273</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>4.500000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>56</td>\n",
       "      <td>0.000166</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.165967</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>57</td>\n",
       "      <td>0.000120</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.250000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.250000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.120271</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>58</td>\n",
       "      <td>0.000586</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>234.750000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>257.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>234.750000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>257.000000</td>\n",
       "      <td>0.586299</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>59</td>\n",
       "      <td>0.000130</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.129661</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>60</td>\n",
       "      <td>0.000438</td>\n",
       "      <td>6.900000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>231.750000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>246.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.750000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>246.000000</td>\n",
       "      <td>0.437855</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.900000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>61</td>\n",
       "      <td>0.000510</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>234.250000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>253.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>234.250000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>253.000000</td>\n",
       "      <td>0.510285</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>62</td>\n",
       "      <td>0.000114</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.113501</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>63</td>\n",
       "      <td>0.000487</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>3.600000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>265.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>265.000000</td>\n",
       "      <td>0.487396</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.400000</td>\n",
       "      <td>3.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>64</td>\n",
       "      <td>0.000140</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.139729</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>65</td>\n",
       "      <td>0.000183</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>233.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>233.000000</td>\n",
       "      <td>0.182816</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>66</td>\n",
       "      <td>0.000310</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.250000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>239.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.250000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>239.000000</td>\n",
       "      <td>0.310375</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>0.000686</td>\n",
       "      <td>6.700000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>270.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>245.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>270.000000</td>\n",
       "      <td>0.685829</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.700000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>68</td>\n",
       "      <td>0.000139</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.750000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.750000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.138966</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>69</td>\n",
       "      <td>0.001172</td>\n",
       "      <td>7.099999</td>\n",
       "      <td>2.600000</td>\n",
       "      <td>247.250000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>306.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>247.250000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>306.000000</td>\n",
       "      <td>1.171982</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.100000</td>\n",
       "      <td>2.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>70</td>\n",
       "      <td>0.000536</td>\n",
       "      <td>7.099999</td>\n",
       "      <td>2.600000</td>\n",
       "      <td>233.750000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>233.750000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>251.000000</td>\n",
       "      <td>0.536153</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.100000</td>\n",
       "      <td>2.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>71</td>\n",
       "      <td>0.000215</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.250000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.250000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.215158</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>72</td>\n",
       "      <td>0.000478</td>\n",
       "      <td>-7.650000</td>\n",
       "      <td>16.642416</td>\n",
       "      <td>227.250000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>231.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>227.250000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>231.000000</td>\n",
       "      <td>0.478073</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-9.500000</td>\n",
       "      <td>12.124355</td>\n",
       "      <td>2.350000</td>\n",
       "      <td>3.125700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>73</td>\n",
       "      <td>0.000271</td>\n",
       "      <td>6.750000</td>\n",
       "      <td>2.900000</td>\n",
       "      <td>224.250000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.250000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.270663</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.750000</td>\n",
       "      <td>2.900000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>74</td>\n",
       "      <td>0.000234</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.233899</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75</td>\n",
       "      <td>0.000278</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>226.000000</td>\n",
       "      <td>0.277821</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>76</td>\n",
       "      <td>0.000155</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.154813</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>77</td>\n",
       "      <td>0.000266</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.266317</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>78</td>\n",
       "      <td>0.000156</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.156020</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>79</td>\n",
       "      <td>0.000166</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.165843</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>80</td>\n",
       "      <td>0.000372</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.250000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.250000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.371950</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>81</td>\n",
       "      <td>0.000146</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.146172</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>82</td>\n",
       "      <td>0.000214</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.213839</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>83</td>\n",
       "      <td>0.000143</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.143360</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>84</td>\n",
       "      <td>0.000192</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.191590</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>85</td>\n",
       "      <td>0.000153</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.152670</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>86</td>\n",
       "      <td>0.000173</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.172946</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>87</td>\n",
       "      <td>0.000405</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.500000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>243.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.500000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>243.000000</td>\n",
       "      <td>0.405353</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>88</td>\n",
       "      <td>0.000210</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.209774</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>89</td>\n",
       "      <td>0.000197</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.750000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.750000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.197053</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>90</td>\n",
       "      <td>0.000811</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>265.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>265.000000</td>\n",
       "      <td>0.811066</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>91</td>\n",
       "      <td>0.000175</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.174844</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>92</td>\n",
       "      <td>0.000650</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>253.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>253.000000</td>\n",
       "      <td>0.649949</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>93</td>\n",
       "      <td>0.000573</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1.200000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>249.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>249.000000</td>\n",
       "      <td>0.572876</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>94</td>\n",
       "      <td>0.000234</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>0.233886</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>95</td>\n",
       "      <td>0.000228</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.228070</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>96</td>\n",
       "      <td>0.000156</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.156376</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>97</td>\n",
       "      <td>0.000690</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.750000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>256.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.750000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>256.000000</td>\n",
       "      <td>0.689687</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>98</td>\n",
       "      <td>0.000225</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.224995</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>99</td>\n",
       "      <td>0.000223</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.222889</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>100</td>\n",
       "      <td>0.000238</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.237804</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>101</td>\n",
       "      <td>0.000182</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.182423</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>102</td>\n",
       "      <td>0.000265</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.265285</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>103</td>\n",
       "      <td>0.000252</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.252446</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>104</td>\n",
       "      <td>0.000376</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>215.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>215.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.375508</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>105</td>\n",
       "      <td>0.000199</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.198542</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>106</td>\n",
       "      <td>0.000189</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.188702</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>107</td>\n",
       "      <td>0.000366</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>231.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>231.000000</td>\n",
       "      <td>0.366112</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>108</td>\n",
       "      <td>0.000388</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>215.000000</td>\n",
       "      <td>232.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.500000</td>\n",
       "      <td>215.000000</td>\n",
       "      <td>232.000000</td>\n",
       "      <td>0.388327</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>109</td>\n",
       "      <td>0.000175</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.174858</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>110</td>\n",
       "      <td>0.000263</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.263109</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>111</td>\n",
       "      <td>0.000582</td>\n",
       "      <td>6.100000</td>\n",
       "      <td>2.600000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>247.000000</td>\n",
       "      <td>0.581798</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.100000</td>\n",
       "      <td>2.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>112</td>\n",
       "      <td>0.000217</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.250000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.250000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>0.217425</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>113</td>\n",
       "      <td>0.000198</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>222.500000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.198038</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>114</td>\n",
       "      <td>0.000208</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>217.750000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>217.750000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.207718</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>115</td>\n",
       "      <td>0.000587</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>235.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>256.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>235.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>256.000000</td>\n",
       "      <td>0.586568</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>116</td>\n",
       "      <td>0.000151</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.151183</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>117</td>\n",
       "      <td>0.000627</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>227.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.627078</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>118</td>\n",
       "      <td>0.000206</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.206444</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>119</td>\n",
       "      <td>0.000210</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.210434</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>120</td>\n",
       "      <td>0.000629</td>\n",
       "      <td>0.350000</td>\n",
       "      <td>14.900000</td>\n",
       "      <td>227.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>227.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>248.000000</td>\n",
       "      <td>0.628549</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-4.250000</td>\n",
       "      <td>10.500000</td>\n",
       "      <td>4.350000</td>\n",
       "      <td>2.900000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>121</td>\n",
       "      <td>0.000240</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>217.250000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>217.250000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.240056</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>122</td>\n",
       "      <td>0.000221</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.250000</td>\n",
       "      <td>214.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.250000</td>\n",
       "      <td>214.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.220658</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>123</td>\n",
       "      <td>0.002142</td>\n",
       "      <td>6.300000</td>\n",
       "      <td>4.200000</td>\n",
       "      <td>279.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>463.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>279.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>463.000000</td>\n",
       "      <td>2.141874</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.300000</td>\n",
       "      <td>4.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>124</td>\n",
       "      <td>0.000239</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.238688</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>125</td>\n",
       "      <td>0.000239</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>228.000000</td>\n",
       "      <td>0.238922</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>126</td>\n",
       "      <td>0.000176</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.175635</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>127</td>\n",
       "      <td>0.000616</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.616101</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>128</td>\n",
       "      <td>0.000159</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>0.158732</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>129</td>\n",
       "      <td>0.000220</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.219535</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>130</td>\n",
       "      <td>0.000274</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>0.274208</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>131</td>\n",
       "      <td>0.000175</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.174954</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>132</td>\n",
       "      <td>0.000180</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.179586</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>133</td>\n",
       "      <td>0.000175</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.174615</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>134</td>\n",
       "      <td>0.000388</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.387992</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>135</td>\n",
       "      <td>0.000170</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.169874</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>136</td>\n",
       "      <td>0.000321</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.321261</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>137</td>\n",
       "      <td>0.000189</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.188757</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>138</td>\n",
       "      <td>0.000375</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.374669</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>139</td>\n",
       "      <td>0.000438</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>235.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>235.000000</td>\n",
       "      <td>0.438318</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>140</td>\n",
       "      <td>0.000248</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>216.750000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>216.750000</td>\n",
       "      <td>213.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.247548</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>141</td>\n",
       "      <td>0.000451</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>224.250000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.450791</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>142</td>\n",
       "      <td>0.000465</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>225.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.464512</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>143</td>\n",
       "      <td>0.000368</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.368427</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>144</td>\n",
       "      <td>0.000273</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>233.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>233.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.273068</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>145</td>\n",
       "      <td>0.000385</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>228.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.384664</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>146</td>\n",
       "      <td>0.000274</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>232.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>232.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.274315</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>147</td>\n",
       "      <td>0.000338</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>227.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>227.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.338073</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>148</td>\n",
       "      <td>0.000239</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>231.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>236.000000</td>\n",
       "      <td>0.239460</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>149</td>\n",
       "      <td>0.000496</td>\n",
       "      <td>5.100000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>238.000000</td>\n",
       "      <td>0.496316</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>4.350000</td>\n",
       "      <td>2.900000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>150</td>\n",
       "      <td>0.000159</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.158834</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>151</td>\n",
       "      <td>0.000217</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>217.750000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>217.750000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.216829</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>152</td>\n",
       "      <td>0.000164</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.163967</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>153</td>\n",
       "      <td>0.000489</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.488515</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>154</td>\n",
       "      <td>0.000175</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.175235</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>155</td>\n",
       "      <td>0.000190</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.190364</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>156</td>\n",
       "      <td>0.000174</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.173739</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>157</td>\n",
       "      <td>0.000294</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.294017</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>158</td>\n",
       "      <td>0.000167</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.166969</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>159</td>\n",
       "      <td>0.000190</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.190129</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>160</td>\n",
       "      <td>0.000212</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.212191</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>161</td>\n",
       "      <td>0.000259</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.258677</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>162</td>\n",
       "      <td>0.000324</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>229.000000</td>\n",
       "      <td>0.324129</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>163</td>\n",
       "      <td>0.000196</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.195807</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>164</td>\n",
       "      <td>0.000269</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>212.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.268972</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>165</td>\n",
       "      <td>0.000162</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.162191</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>166</td>\n",
       "      <td>0.000178</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.178190</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>167</td>\n",
       "      <td>0.000221</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.221136</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>168</td>\n",
       "      <td>0.000170</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.170279</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>169</td>\n",
       "      <td>0.000220</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.220458</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>170</td>\n",
       "      <td>0.000178</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.178102</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>171</td>\n",
       "      <td>0.000174</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.173601</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>172</td>\n",
       "      <td>0.000217</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>222.000000</td>\n",
       "      <td>0.216681</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>173</td>\n",
       "      <td>0.000176</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.176045</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>174</td>\n",
       "      <td>0.000182</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.181666</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>175</td>\n",
       "      <td>0.000339</td>\n",
       "      <td>0.350000</td>\n",
       "      <td>14.900000</td>\n",
       "      <td>223.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>223.250000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>230.000000</td>\n",
       "      <td>0.339457</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-4.250000</td>\n",
       "      <td>10.500000</td>\n",
       "      <td>4.350000</td>\n",
       "      <td>2.900000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>176</td>\n",
       "      <td>0.000210</td>\n",
       "      <td>6.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.209935</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>177</td>\n",
       "      <td>0.000267</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.266726</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>178</td>\n",
       "      <td>0.000217</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.217193</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>179</td>\n",
       "      <td>0.000319</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>224.000000</td>\n",
       "      <td>0.318963</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>180</td>\n",
       "      <td>0.000201</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.201497</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>181</td>\n",
       "      <td>0.000218</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.218366</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>182</td>\n",
       "      <td>0.000220</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.220147</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>183</td>\n",
       "      <td>0.000180</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.750000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.179855</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>184</td>\n",
       "      <td>0.000169</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.169247</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>185</td>\n",
       "      <td>0.000181</td>\n",
       "      <td>7.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.181115</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>186</td>\n",
       "      <td>0.000199</td>\n",
       "      <td>7.800000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.500000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.199089</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.800000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>187</td>\n",
       "      <td>0.000185</td>\n",
       "      <td>8.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.185471</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.200000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>188</td>\n",
       "      <td>0.000203</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.203133</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>189</td>\n",
       "      <td>0.000212</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.211777</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>190</td>\n",
       "      <td>0.000193</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.192612</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>191</td>\n",
       "      <td>0.000235</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.750000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.234601</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>192</td>\n",
       "      <td>0.000199</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.198628</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-4.250000</td>\n",
       "      <td>10.500000</td>\n",
       "      <td>4.500000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>193</td>\n",
       "      <td>0.000204</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>219.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.203856</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>194</td>\n",
       "      <td>0.000217</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.250000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.216540</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>195</td>\n",
       "      <td>0.000262</td>\n",
       "      <td>8.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.500000</td>\n",
       "      <td>216.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.262263</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>196</td>\n",
       "      <td>0.000185</td>\n",
       "      <td>7.400000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.500000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.184834</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.400000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>197</td>\n",
       "      <td>0.000173</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>218.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.173441</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>198</td>\n",
       "      <td>0.000283</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.250000</td>\n",
       "      <td>215.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.250000</td>\n",
       "      <td>215.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.282869</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>199</td>\n",
       "      <td>0.000171</td>\n",
       "      <td>7.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>219.000000</td>\n",
       "      <td>221.000000</td>\n",
       "      <td>0.170614</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>200</td>\n",
       "      <td>0.000180</td>\n",
       "      <td>8.600000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>218.750000</td>\n",
       "      <td>217.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>0.179716</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.600000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table><p>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1;30;43mStreaming output truncated to the last 5000 lines.\u001b[0m\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no position filled yet\n",
      "============================================================\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no more empty cells to place numbers\n",
      "============================================================\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no empty cells to fill\n",
      "============================================================\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, 0)  # Backtrack: no empty cell found backtrack earlier\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no position found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found\n",
      "============================================================\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Row and column checks\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Box checks\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found\n",
      "============================================================\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no empty cell found with a valid number\n",
      "============================================================\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: solved or board is empty\n",
      "============================================================\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no empty cell found for this backtracking step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no empty cell found with a valid digit\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no empty cell found with a valid digit\n",
      "============================================================\n",
      "\n",
      " Valid moves: 24, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 24, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 24, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 24, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for backtracking\n",
      "============================================================\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for current backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found in this branch\n",
      "============================================================\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no move found\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: board is solved\n",
      "============================================================\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for current board state\n",
      "============================================================\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 26, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found in this backtracking step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 29, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for current backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 31, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid[row, col, number]:\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid[row, col, number]:\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for this backtracking step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for current backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for current branch\n",
      "============================================================\n",
      "\n",
      " Valid moves: 35, Final state: success\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 32, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 27, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no cell found with a valid number\n",
      "============================================================\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 30, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;226m9\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      "============================================================\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no position found for this backtrack step\n",
      "============================================================\n",
      "\n",
      " Valid moves: 28, Final state: failed\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m5\u001b[0m \u2502 \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m3\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;226m8\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n",
      "\n",
      " Valid moves: 33, Final state: failed\n",
      "Strategy:\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for n in range(9):\n",
      "            if board[row][n] == number or board[n][col] == number:\n",
      "         ...\n",
      "\n",
      "Final board:\n",
      "\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n",
      "\u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m3\u001b[0m \u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502 \u001b[38;5;45m6\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m8\u001b[0m \u2502 \u001b[38;5;226m7\u001b[0m \u001b[38;5;226m1\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502 \u001b[38;5;226m5\u001b[0m \u001b[38;5;226m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m4\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;226m2\u001b[0m \u2502 \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u001b[38;5;45m8\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;226m6\u001b[0m \u2502 \u001b[38;5;226m1\u001b[0m \u001b[38;5;239m.\u001b[0m \u001b[38;5;45m3\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m2\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m2\u001b[0m \u001b[38;5;226m7\u001b[0m \u001b[38;5;239m.\u001b[0m \u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m1\u001b[0m \u2502\n",
      "\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n",
      "\u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m7\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m4\u001b[0m \u001b[38;5;226m9\u001b[0m \u2502 \u001b[38;5;45m1\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;45m9\u001b[0m \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m7\u001b[0m \u001b[38;5;45m5\u001b[0m \u001b[38;5;45m6\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m4\u001b[0m \u2502\n",
      "\u2502 \u001b[38;5;226m4\u001b[0m \u001b[38;5;226m6\u001b[0m \u001b[38;5;226m5\u001b[0m \u2502 \u001b[38;5;45m3\u001b[0m \u001b[38;5;226m2\u001b[0m \u001b[38;5;45m1\u001b[0m \u2502 \u001b[38;5;45m8\u001b[0m \u001b[38;5;45m9\u001b[0m \u001b[38;5;226m7\u001b[0m \u2502\n",
      "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "TrainOutput(global_step=200, training_loss=0.0005054940755871939, metrics={'train_runtime': 7679.959, 'train_samples_per_second': 0.104, 'train_steps_per_second': 0.026, 'total_flos': 0.0, 'train_loss': 0.0005054940755871939})"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainer.train()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mPCjD6Tdnqi8"
   },
   "source": [
    "And now with the LoRA we just trained with GRPO - we first save the LoRA first!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "MPjc98y_nrTF",
    "outputId": "61f5284c-ac2a-4be5-9944-7e5e90d86618"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['grpo_saved_lora/processor_config.json']"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.save_pretrained(\"grpo_saved_lora\")  # Local saving\n",
    "tokenizer.save_pretrained(\"grpo_saved_lora\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "eC0MBN8AnvJb"
   },
   "source": [
    "Verify LoRA is actually trained!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "fFBpVx6SnytW"
   },
   "outputs": [],
   "source": [
    "from safetensors import safe_open\n",
    "\n",
    "tensors = {}\n",
    "with safe_open(\"grpo_saved_lora/adapter_model.safetensors\", framework = \"pt\") as f:\n",
    "    # Verify both A and B are non zero\n",
    "    for key in f.keys():\n",
    "        tensor = f.get_tensor(key)\n",
    "        n_zeros = (tensor == 0).sum() / tensor.numel()\n",
    "        assert(n_zeros.item() != tensor.numel())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tlaUdxC_VHpz"
   },
   "source": [
    "<a name=\"Inference\"></a>\n",
    "# Inference\n",
    "Now let's try the model we just trained!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "8BZZHOKiF9Ct",
    "outputId": "ed2eab18-925c-4d3f-fc20-71795c10947f"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<s><s>[SYSTEM_PROMPT]You are Ministral-3-3B-Instruct-2512, a Large Language Model (LLM) created by Mistral AI, a French startup headquartered in Paris.\n",
      "You power an AI assistant called Le Chat.\n",
      "Your knowledge base was last updated on 2023-10-01.\n",
      "The current date is {today}.\n",
      "\n",
      "When you're not sure about some information or when the user's request requires up-to-date or specific data, you must use the available tools to fetch the information. Do not hesitate to use tools whenever they can provide a more accurate or complete response. If no relevant tools are available, then clearly state that you don't have the information and avoid making up anything.\n",
      "If the user's question is not clear, ambiguous, or does not provide enough context for you to accurately answer the question, you do not try to answer it right away and you rather ask the user to clarify their request (e.g. \"What are some good restaurants around me?\" => \"Where are you?\" or \"When is the next flight to Tokyo\" => \"Where do you travel from?\").\n",
      "You are always very attentive to dates, in particular you try to resolve dates (e.g. \"yesterday\" is {yesterday}) and when asked about information at specific dates, you discard information that is at another date.\n",
      "You follow these instructions in all languages, and always respond to the user in the language they use or request.\n",
      "Next sections describe the capabilities that you have.\n",
      "\n",
      "# WEB BROWSING INSTRUCTIONS\n",
      "\n",
      "You cannot perform any web search or access internet to open URLs, links etc. If it seems like the user is expecting you to do so, you clarify the situation and ask the user to copy paste the text directly in the chat.\n",
      "\n",
      "# MULTI-MODAL INSTRUCTIONS\n",
      "\n",
      "You have the ability to read images, but you cannot generate images. You also cannot transcribe audio files or videos.\n",
      "You cannot read nor transcribe audio files or videos.\n",
      "\n",
      "# TOOL CALLING INSTRUCTIONS\n",
      "\n",
      "You may have access to tools that you can use to fetch information or perform actions. You must use these tools in the following situations:\n",
      "\n",
      "1. When the request requires up-to-date information.\n",
      "2. When the request requires specific data that you do not have in your knowledge base.\n",
      "3. When the request involves actions that you cannot perform without tools.\n",
      "\n",
      "Always prioritize using tools to provide the most accurate and helpful response. If tools are not available, inform the user that you cannot perform the requested action at the moment.[/SYSTEM_PROMPT][INST]Create a Sudoku solving strategy using only native Python built-in functions without any import statements.\n",
      "You are given two lists of lists (9x9 grids):\n",
      "- board: current state (0 means empty)\n",
      "- initial: starting puzzle (0 means was empty, numbers are fixed)\n",
      "\n",
      "Return a tuple (row, col, number) for the next move.\n",
      "- row: 0-8 (row index)\n",
      "- col: 0-8 (column index)\n",
      "- number: 1-9 (digit to place)\n",
      "\n",
      "Only place numbers in cells that are BOTH empty in initial AND empty in board (initial[row][col] == 0 AND board[row][col] == 0)\n",
      "Use Sudoku rules: no duplicates in rows, columns, or 3x3 boxes.\n",
      "Output your function in backticks:\n",
      "```python\n",
      "def strategy(board, initial):\n",
      "    # Your logic here\n",
      "    return (row, col, number)\n",
      "```\n",
      "All helper functions must be inside def strategy. Output only the function.[/INST]```python\n",
      "def strategy(board, initial):\n",
      "    def is_valid(row, col, number):\n",
      "        # Check row and column\n",
      "        for i in range(9):\n",
      "            if board[row][i] == number or board[i][col] == number:\n",
      "                return False\n",
      "        # Check 3x3 box\n",
      "        box_row, box_col = row - row % 3, col - col % 3\n",
      "        for r in range(3):\n",
      "            for c in range(3):\n",
      "                if board[box_row + r][box_col + c] == number:\n",
      "                    return False\n",
      "        return True\n",
      "\n",
      "    for row in range(9):\n",
      "        for col in range(9):\n",
      "            if initial[row][col] == 0 and board[row][col] == 0:\n",
      "                for number in range(1, 10):\n",
      "                    if is_valid(row, col, number):\n",
      "                        return (row, col, number)\n",
      "    return (-1, -1, -1)  # Backtrack: no solution found for this backtrack step\n",
      "```</s>\n"
     ]
    }
   ],
   "source": [
    "text = tokenizer.apply_chat_template(\n",
    "    [{\"role\": \"user\", \"content\": prompt.strip()}],\n",
    "    tokenize = False,\n",
    "    add_generation_prompt = True,\n",
    ")\n",
    "\n",
    "from transformers import TextStreamer\n",
    "\n",
    "_ = model.generate(\n",
    "    **tokenizer(images=None,text=text, return_tensors = \"pt\").to(\"cuda\"),\n",
    "    temperature = 1.0,\n",
    "    max_new_tokens = 512,\n",
    "    streamer = TextStreamer(tokenizer, skip_prompt = False),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-NUEmHFSYNTp"
   },
   "source": [
    "<a name=\"Save\"></a>\n",
    "### Saving to float16 for VLLM\n",
    "\n",
    "We also support saving to `float16` directly. Select `merged_16bit` for float16 or `merged_4bit` for int4. We also allow `lora` adapters as a fallback. Use `push_to_hub_merged` to upload to your Hugging Face account! You can go to https://huggingface.co/settings/tokens for your personal tokens."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "NjXGTkp7YNtB"
   },
   "outputs": [],
   "source": [
    "# Merge to 16bit\n",
    "if False: model.save_pretrained_merged(\"model\", tokenizer, save_method = \"merged_16bit\",)\n",
    "if False: model.push_to_hub_merged(\"hf/model\", tokenizer, save_method = \"merged_16bit\", token = \"\")\n",
    "\n",
    "# Merge to 4bit\n",
    "if False: model.save_pretrained_merged(\"model\", tokenizer, save_method = \"merged_4bit\",)\n",
    "if False: model.push_to_hub_merged(\"hf/model\", tokenizer, save_method = \"merged_4bit\", token = \"\")\n",
    "\n",
    "# Just LoRA adapters\n",
    "if False:\n",
    "    model.save_pretrained(\"model\")\n",
    "    tokenizer.save_pretrained(\"model\")\n",
    "if False:\n",
    "    model.push_to_hub(\"hf/model\", token = \"\")\n",
    "    tokenizer.push_to_hub(\"hf/model\", token = \"\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "_bBqsonjoD7Z"
   },
   "source": [
    "### GGUF / llama.cpp Conversion\n",
    "To save to `GGUF` / `llama.cpp`, we support it natively now! We clone `llama.cpp` and we default save it to `q8_0`. We allow all methods like `q4_k_m`. Use `save_pretrained_gguf` for local saving and `push_to_hub_gguf` for uploading to HF.\n",
    "\n",
    "Some supported quant methods (full list on our [Wiki page](https://github.com/unslothai/unsloth/wiki#gguf-quantization-options)):\n",
    "* `q8_0` - Fast conversion. High resource use, but generally acceptable.\n",
    "* `q4_k_m` - Recommended. Uses Q6_K for half of the attention.wv and feed_forward.w2 tensors, else Q4_K.\n",
    "* `q5_k_m` - Recommended. Uses Q6_K for half of the attention.wv and feed_forward.w2 tensors, else Q5_K.\n",
    "\n",
    "[**NEW**] To finetune and auto export to Ollama, try our [Ollama notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "TV0C6l7SoGDr"
   },
   "outputs": [],
   "source": [
    "# Save to 8bit Q8_0\n",
    "if False: model.save_pretrained_gguf(\"model\", tokenizer,)\n",
    "# Remember to go to https://huggingface.co/settings/tokens for a token!\n",
    "# And change hf to your username!\n",
    "if False: model.push_to_hub_gguf(\"hf/model\", tokenizer, token = \"\")\n",
    "\n",
    "# Save to 16bit GGUF\n",
    "if False: model.save_pretrained_gguf(\"model\", tokenizer, quantization_method = \"f16\")\n",
    "if False: model.push_to_hub_gguf(\"hf/model\", tokenizer, quantization_method = \"f16\", token = \"\")\n",
    "\n",
    "# Save to q4_k_m GGUF\n",
    "if False: model.save_pretrained_gguf(\"model\", tokenizer, quantization_method = \"q4_k_m\")\n",
    "if False: model.push_to_hub_gguf(\"hf/model\", tokenizer, quantization_method = \"q4_k_m\", token = \"\")\n",
    "\n",
    "# Save to multiple GGUF options - much faster if you want multiple!\n",
    "if False:\n",
    "    model.push_to_hub_gguf(\n",
    "        \"hf/model\", # Change hf to your username!\n",
    "        tokenizer,\n",
    "        quantization_method = [\"q4_k_m\", \"q8_0\", \"q5_k_m\",],\n",
    "        token = \"\",\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tLtYuKEioJj9"
   },
   "source": [
    "Now, use the `model-unsloth.gguf` file or `model-unsloth-Q4_K_M.gguf` file in llama.cpp.\n",
    "\n",
    "And we're done! If you have any questions on Unsloth, we have a [Discord](https://discord.gg/unsloth) channel! If you find any bugs or want to keep updated with the latest LLM stuff, or need help, join projects etc, feel free to join our Discord!\n",
    "\n",
    "Some other links:\n",
    "1. Train your own reasoning model - Llama GRPO notebook [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-GRPO.ipynb)\n",
    "2. Saving finetunes to Ollama. [Free notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb)\n",
    "3. Llama 3.2 Vision finetuning - Radiography use case. [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_(11B)-Vision.ipynb)\n",
    "6. See notebooks for DPO, ORPO, Continued pretraining, conversational finetuning and more on our [documentation](https://docs.unsloth.ai/get-started/unsloth-notebooks)!\n",
    "\n",
    "<div class=\"align-center\">\n",
    "  <a href=\"https://unsloth.ai\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/unsloth%20new%20logo.png\" width=\"115\"></a>\n",
    "  <a href=\"https://discord.gg/unsloth\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/Discord.png\" width=\"145\"></a>\n",
    "  <a href=\"https://docs.unsloth.ai/\"><img src=\"https://github.com/unslothai/unsloth/blob/main/images/documentation%20green%20button.png?raw=true\" width=\"125\"></a>\n",
    "\n",
    "  Join Discord if you need help + \u2b50\ufe0f <i>Star us on <a href=\"https://github.com/unslothai/unsloth\">Github</a> </i> \u2b50\ufe0f\n",
    "</div>\n",
    "\n",
    "  This notebook and all Unsloth notebooks are licensed [LGPL-3.0](https://github.com/unslothai/notebooks?tab=LGPL-3.0-1-ov-file#readme).\n"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "gpuType": "T4",
   "include_colab_link": true,
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "04b2c9b577094decb9805dab33ffed51": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0a7d4786cda74e60b6ec8c77a78f7fc7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0b7bfca31b9941af976ba1b2bac22c38": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0d5f369a1d954c799cbac8b5c0507fb2": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "132fd01b4b7c4fc79d736fc95e4f00c3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "1498e7f9eb9841b89a9263deec8cfaea": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "18744882ad4444b880b2cdebcdcc93ea": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "193b285c9fd642eab9be53cd0bf7433d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1c81fd9cdc824d92ae61ccc5b2b8fa73": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1ce00a5374ee4bf6a067881f5cb451af": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_269ec52cd12641b3b866a5c98ad19d07",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_0b7bfca31b9941af976ba1b2bac22c38",
      "value": "\u2007728/728\u2007[00:00&lt;00:00,\u200754.3kB/s]"
     }
    },
    "1db6c54357f34dc5af32899cba0ac660": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b262ca3bcc784f0a9c5bb8d6a163b6fe",
      "max": 45577,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c51b8c2051ad4b9a94603af332475427",
      "value": 45577
     }
    },
    "21a8ac1997fd491796d7290458e73956": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2251c3f4698b4f8aa49df49543e13196": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_738b68355ead41bfa3bef595fe757201",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_1498e7f9eb9841b89a9263deec8cfaea",
      "value": "\u2007189/189\u2007[00:00&lt;00:00,\u200717.5kB/s]"
     }
    },
    "23ddcf8e888142a2ab8b370e8e2e4924": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "249bfaa209054491a6c0cc7e08ff77e7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "24a76c4ef3b24b709c226d51d5432aea": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "269ec52cd12641b3b866a5c98ad19d07": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "26a32591bcf44f098f89713297b9413d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "27edc7714c084d39955a2de84e56d921": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "28cf2a512e0845389881f58817a70c38": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2962a0841f244d1f9219c6f1364c0b29": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e1d864f85e524454b743dab82196c5e3",
      "max": 2,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_27edc7714c084d39955a2de84e56d921",
      "value": 2
     }
    },
    "2c47367e63f14b11859d996d6c3e5e3a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2c8e25a98b2b4d7b855d57cd1c2cc82c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2dc71128a2b2451c94d14933c3ef6c59": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "324f41dafb154070b63305517d023eb1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_eb230248cde54ce3bea12700f41397b1",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_f473a39499194b0094bd46287f4b0bce",
      "value": "\u2007458/458\u2007[00:24&lt;00:00,\u200772.71it/s,\u2007Materializing\u2007param=model.vision_tower.transformer.layers.23.ffn_norm.weight]"
     }
    },
    "3368bed575d24a669d5dac2526577b7e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6841bc1f73d0402683d3efc7db802465",
      "max": 7502,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_2dc71128a2b2451c94d14933c3ef6c59",
      "value": 7502
     }
    },
    "35f13c46c0024d9d9d396fd840cda33e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "393ccbce7a5747c0a75bf7279631a5ab": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_18744882ad4444b880b2cdebcdcc93ea",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_8884436eea0048c59562ab6172d8ca14",
      "value": "\u200721.4k/21.4k\u2007[00:00&lt;00:00,\u20072.15MB/s]"
     }
    },
    "3de31ed66b6f4272bf2074231d88d293": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_e66881d5d0fc4b5192fd1732eb19d137",
       "IPY_MODEL_580214c6c3ef4eaa8da7cf6275aed23e",
       "IPY_MODEL_324f41dafb154070b63305517d023eb1"
      ],
      "layout": "IPY_MODEL_28cf2a512e0845389881f58817a70c38"
     }
    },
    "3e457905a77b463c96d2a42a66749283": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_bbec0b5f32894f11a6ba460cccdc33c2",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_9166929e6b6546fda5354a856d1110c6",
      "value": 1
     }
    },
    "4355d6bee4af44f18c0ef89589b6e082": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "469d1a0a9d504748ae800dee0c645fce": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "476c4f2ae91f4dcf9fafef9234ca4a32": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4a9089bb320440f29a31f2fc9f2a781b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_23ddcf8e888142a2ab8b370e8e2e4924",
      "max": 17078110,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_d6ee650d710c43929fecd9ff0dee0f2e",
      "value": 17078110
     }
    },
    "4c875576cb32499a9840ad2c991fcaa3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4f541dbb81a9404d85d4e7b4b38af073": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_700fe67c924d4ad3a9498440a8d6737d",
       "IPY_MODEL_3e457905a77b463c96d2a42a66749283",
       "IPY_MODEL_ec6f1d2b96854f3a8f489d3022c9e94f"
      ],
      "layout": "IPY_MODEL_4355d6bee4af44f18c0ef89589b6e082"
     }
    },
    "4f5cc939a9e14abda3e3e816eed2d28b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4fe32477cdb94a88a50766e6334b8e1a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_fbaf38fd8d16419ebd5e0880c7eee3a9",
       "IPY_MODEL_3368bed575d24a669d5dac2526577b7e",
       "IPY_MODEL_d11d10dcf8124a59a9e201fda7d1ad20"
      ],
      "layout": "IPY_MODEL_702c81292ea44f3bab215277120b5c58"
     }
    },
    "5035e8ea28744b669fe5f4dd6024f5df": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "554d89eedcb74537ba6ea75e278f5b56": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "564536b52e8b4b8db789a855aa17e5e9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0a7d4786cda74e60b6ec8c77a78f7fc7",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_04b2c9b577094decb9805dab33ffed51",
      "value": "\u20072/2\u2007[02:00&lt;00:00,\u2007120.59s/it]"
     }
    },
    "580214c6c3ef4eaa8da7cf6275aed23e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ab84d82e55ad4fa7ab04e11e9ce2bdb9",
      "max": 458,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a2bf6d9d1d9a40eda8832439f5b454a4",
      "value": 458
     }
    },
    "59049b32f89d4803b9f4c282711e5eec": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "5aac87d473a54e5eb90014cc9113d1ac": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "5e1731df9d044a9ea3d21b0e1b54c6d0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "60f32c4909d846e0a6aff62affee4d3f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "615ab90e6c4d4b6ca4673cb29a60faa1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "665df323bf3345c9a9f63338982d4255": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "6841bc1f73d0402683d3efc7db802465": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6d852617f16e4962a6c521ed5ed4c5a9": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "700fe67c924d4ad3a9498440a8d6737d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_476c4f2ae91f4dcf9fafef9234ca4a32",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_c2db413e07864994bf233f0abdb0ebb7",
      "value": "Download\u2007complete:\u2007100%"
     }
    },
    "702c81292ea44f3bab215277120b5c58": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "70c8e2981b1145fd91bbc05f6fd58fea": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2c8e25a98b2b4d7b855d57cd1c2cc82c",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_59049b32f89d4803b9f4c282711e5eec",
      "value": "model.safetensors.index.json:\u2007100%"
     }
    },
    "732274b5c58d4bb0a176511ed8dcacaa": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_86cfd1f3e8fc40b5a8921976d8089ae6",
       "IPY_MODEL_da6340c89f8743eb9b29e639fac5e028",
       "IPY_MODEL_d3aa06551507474ab363858df6a4cd08"
      ],
      "layout": "IPY_MODEL_21a8ac1997fd491796d7290458e73956"
     }
    },
    "738b68355ead41bfa3bef595fe757201": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "74a5b7e3cd5647f8bf85ccf251d1b192": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "768bd3c5a95745988cfcc36af3c2372b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "76901317301e413d9c7bea64a52f80be": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "76ca39db50b942a1a1d3473255c2e9f3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "76ff198dd539472288b4435e2af2edc1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_f804dbefdf0a42b8a1686fc6a020a9e6",
       "IPY_MODEL_d27655073e9d46ed96f070bcf0ff3c8b",
       "IPY_MODEL_2251c3f4698b4f8aa49df49543e13196"
      ],
      "layout": "IPY_MODEL_be31d8956c024cc39eb8da53d5f1949b"
     }
    },
    "77a550d798ea45369cf16c5d6bd22f96": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "78229d4741264b6eb54c659f8c1df6f3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "7fcdfa7d23d44925b0f232300db2f59d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_70c8e2981b1145fd91bbc05f6fd58fea",
       "IPY_MODEL_1db6c54357f34dc5af32899cba0ac660",
       "IPY_MODEL_e06c61e2516a461e949ecef1b0380358"
      ],
      "layout": "IPY_MODEL_f2b76ba391f64baa8c06b21a1895e218"
     }
    },
    "84e49da74fb84d3f9c07326dcccafaa5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "86cfd1f3e8fc40b5a8921976d8089ae6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1c81fd9cdc824d92ae61ccc5b2b8fa73",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_554d89eedcb74537ba6ea75e278f5b56",
      "value": "generation_config.json:\u2007100%"
     }
    },
    "8884436eea0048c59562ab6172d8ca14": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8b1aacb7f9c64eee8e9f05ae27fa13b8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_26a32591bcf44f098f89713297b9413d",
      "max": 728,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_74a5b7e3cd5647f8bf85ccf251d1b192",
      "value": 728
     }
    },
    "8b2617d6edaf4533ab0ec16a18b3ec15": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9bbe874a71f0473c9d5681a95d65411b",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_78229d4741264b6eb54c659f8c1df6f3",
      "value": "tokenizer_config.json:\u2007100%"
     }
    },
    "8f721f0e541f40c7a6c2bd789eff8378": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "905299b6e97b4f61b113fc4da6c2e2c7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a907b79d81864654844d3d0a84545b58",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_c3ba270a4c354cfc91da59871322df20",
      "value": "special_tokens_map.json:\u2007100%"
     }
    },
    "9166929e6b6546fda5354a856d1110c6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "9bbe874a71f0473c9d5681a95d65411b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9c974a11cfc9468bb843152f5d2606a7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0d5f369a1d954c799cbac8b5c0507fb2",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_a5ab9cf7bfa8465182706e05b12a8224",
      "value": "tokenizer.json:\u2007100%"
     }
    },
    "9d4a836de73249ac8b14960730acc959": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a05e52c2b75645faac1b8795a159bea8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_c599268bb44c47e6b2220ca0f2efa2cb",
       "IPY_MODEL_8b1aacb7f9c64eee8e9f05ae27fa13b8",
       "IPY_MODEL_1ce00a5374ee4bf6a067881f5cb451af"
      ],
      "layout": "IPY_MODEL_4f5cc939a9e14abda3e3e816eed2d28b"
     }
    },
    "a0d5d827b11c4b0a85221867d890fafb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "a2bf6d9d1d9a40eda8832439f5b454a4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a5ab9cf7bfa8465182706e05b12a8224": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "a907b79d81864654844d3d0a84545b58": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "aa55602ad84a4ac194fafdcff8158b43": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_905299b6e97b4f61b113fc4da6c2e2c7",
       "IPY_MODEL_ad147ffce1164eb2aa7ffa87e7b0af5f",
       "IPY_MODEL_393ccbce7a5747c0a75bf7279631a5ab"
      ],
      "layout": "IPY_MODEL_b7b2250b06eb4642813f5a88da424a7e"
     }
    },
    "ab22700122f640c09ce53cfee53fdb3f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "ab84d82e55ad4fa7ab04e11e9ce2bdb9": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ac683c1e64524b1bbef1f057224ea4d5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "ad147ffce1164eb2aa7ffa87e7b0af5f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_193b285c9fd642eab9be53cd0bf7433d",
      "max": 21427,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_b4239e2034a640d5abdf58ec72888e2c",
      "value": 21427
     }
    },
    "b262ca3bcc784f0a9c5bb8d6a163b6fe": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b4239e2034a640d5abdf58ec72888e2c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "b42f06656e054e35852d2895e2f32028": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "b602521edf9b4e62bc6e392e6c434079": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8f721f0e541f40c7a6c2bd789eff8378",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_a0d5d827b11c4b0a85221867d890fafb",
      "value": "\u200717.1M/17.1M\u2007[00:01&lt;00:00,\u200795.9kB/s]"
     }
    },
    "b7b2250b06eb4642813f5a88da424a7e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "bbec0b5f32894f11a6ba460cccdc33c2": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "20px"
     }
    },
    "bbf673d4678949f2930472cb521b4df2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_8b2617d6edaf4533ab0ec16a18b3ec15",
       "IPY_MODEL_efa739f7e712454cab002609fa73809c",
       "IPY_MODEL_f00f9cbc3bbd45609deee25c2c99e09e"
      ],
      "layout": "IPY_MODEL_76901317301e413d9c7bea64a52f80be"
     }
    },
    "be31d8956c024cc39eb8da53d5f1949b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "bfb21b57d6614f2497669cf1b5a0d987": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_9c974a11cfc9468bb843152f5d2606a7",
       "IPY_MODEL_4a9089bb320440f29a31f2fc9f2a781b",
       "IPY_MODEL_b602521edf9b4e62bc6e392e6c434079"
      ],
      "layout": "IPY_MODEL_84e49da74fb84d3f9c07326dcccafaa5"
     }
    },
    "c1a1cb328a9149e398cf683805c92f83": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c2db413e07864994bf233f0abdb0ebb7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c3ba270a4c354cfc91da59871322df20": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c51b8c2051ad4b9a94603af332475427": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c599268bb44c47e6b2220ca0f2efa2cb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e92059fff20f420bb9dde3b705024750",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_665df323bf3345c9a9f63338982d4255",
      "value": "preprocessor_config.json:\u2007100%"
     }
    },
    "cc7a595f09254a96bb89d0437cb2dbd0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cf2f0e04c9c24a9b86cd274cb0abcde4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d11d10dcf8124a59a9e201fda7d1ad20": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_f39e75b383724b39a1a624164fa68da7",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_35f13c46c0024d9d9d396fd840cda33e",
      "value": "\u20077.50k/7.50k\u2007[00:00&lt;00:00,\u2007435kB/s]"
     }
    },
    "d27655073e9d46ed96f070bcf0ff3c8b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cc7a595f09254a96bb89d0437cb2dbd0",
      "max": 189,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_ab22700122f640c09ce53cfee53fdb3f",
      "value": 189
     }
    },
    "d3aa06551507474ab363858df6a4cd08": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_469d1a0a9d504748ae800dee0c645fce",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_ac683c1e64524b1bbef1f057224ea4d5",
      "value": "\u2007131/131\u2007[00:00&lt;00:00,\u200714.1kB/s]"
     }
    },
    "d6ee650d710c43929fecd9ff0dee0f2e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "da6340c89f8743eb9b29e639fac5e028": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_768bd3c5a95745988cfcc36af3c2372b",
      "max": 131,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_9d4a836de73249ac8b14960730acc959",
      "value": 131
     }
    },
    "e06c61e2516a461e949ecef1b0380358": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2c47367e63f14b11859d996d6c3e5e3a",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_c1a1cb328a9149e398cf683805c92f83",
      "value": "\u200745.6k/45.6k\u2007[00:00&lt;00:00,\u20073.39MB/s]"
     }
    },
    "e1a7bcccbeb84b70891fe0776fd4203a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4c875576cb32499a9840ad2c991fcaa3",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_132fd01b4b7c4fc79d736fc95e4f00c3",
      "value": "Fetching\u20072\u2007files:\u2007100%"
     }
    },
    "e1d864f85e524454b743dab82196c5e3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e66881d5d0fc4b5192fd1732eb19d137": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_5035e8ea28744b669fe5f4dd6024f5df",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_77a550d798ea45369cf16c5d6bd22f96",
      "value": "Loading\u2007weights:\u2007100%"
     }
    },
    "e92059fff20f420bb9dde3b705024750": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "eb230248cde54ce3bea12700f41397b1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ec6f1d2b96854f3a8f489d3022c9e94f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cf2f0e04c9c24a9b86cd274cb0abcde4",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_5aac87d473a54e5eb90014cc9113d1ac",
      "value": "\u20077.70G/7.70G\u2007[02:00&lt;00:00,\u200738.1MB/s]"
     }
    },
    "efa739f7e712454cab002609fa73809c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_24a76c4ef3b24b709c226d51d5432aea",
      "max": 205787,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_76ca39db50b942a1a1d3473255c2e9f3",
      "value": 205787
     }
    },
    "f00f9cbc3bbd45609deee25c2c99e09e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_615ab90e6c4d4b6ca4673cb29a60faa1",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_b42f06656e054e35852d2895e2f32028",
      "value": "\u2007206k/206k\u2007[00:00&lt;00:00,\u200715.1MB/s]"
     }
    },
    "f2b76ba391f64baa8c06b21a1895e218": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "f39e75b383724b39a1a624164fa68da7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "f40dbf1a955f4450a57dd9abbef4d1a8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_e1a7bcccbeb84b70891fe0776fd4203a",
       "IPY_MODEL_2962a0841f244d1f9219c6f1364c0b29",
       "IPY_MODEL_564536b52e8b4b8db789a855aa17e5e9"
      ],
      "layout": "IPY_MODEL_6d852617f16e4962a6c521ed5ed4c5a9"
     }
    },
    "f473a39499194b0094bd46287f4b0bce": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "f804dbefdf0a42b8a1686fc6a020a9e6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_249bfaa209054491a6c0cc7e08ff77e7",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_5e1731df9d044a9ea3d21b0e1b54c6d0",
      "value": "processor_config.json:\u2007100%"
     }
    },
    "fbaf38fd8d16419ebd5e0880c7eee3a9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_fedeaae7d4504a24bd314b512ab1e296",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_60f32c4909d846e0a6aff62affee4d3f",
      "value": "chat_template.jinja:\u2007100%"
     }
    },
    "fedeaae7d4504a24bd314b512ab1e296": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "state": {}
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}